Inicialización de variables

Rafael Eduardo Mart?Candial
26 de Diciembre del 2004
Hola. Estamos teniendo algunos problemas en el proyecto desde que han migrado a una nueva máquina de Producción:
¿Cuando declaramos las variables el compilador inicializa las variables a ceros o nulos?¿Es el Sistema Operativo quien realiza esta primera inicialización? Si lo hace el compilador ¿se puede configurar mediante algún parámetro? Y en el caso de las estructuras ¿son inicializadas por defecto, ya sea por el compilador o por el Sistema Operativo?
En la aplicación que estamos manteniendo utilizamos arrays de Service Builder que crean dinámicamente los elementos del array a través del operador [], de forma que con hacer referencia a un elemento del array es creado automáticamente y me da la sensación de que el Service Builder crea los nuevos elemento en el array pero no los inicializa. Esto no fallaba en la antigua máquina pero en la nueva parece que las cosas son distintas.
Muchas gracias.
Un saludo, Rafael.

chuidiang
26 de Diciembre del 2004
Las variables en
C/C++ no se inicializan y es el comportamiento que debes presuponer en cualquier sitio que programes en C o C++.

De todas formas, hay algunos compiladores (es el compilador el que lo hace) que sí las inicializa a cero. Insisto, no es el comportamiento standard, sino una "mejora" que dan algunos compiladores.

Para una programación correcta, debe ser el código el que inicialice las variables o el que se preocupe de no usarlas hasta que tengan un valor asignado.

Se bueno.

rir3760
26 de Diciembre del 2004
En C las variables se inicializan (o no) a cero dependiendo de su tipo de almacenamiento:

Las variables con almacenamiento de tipo estatico, esto es, variables locales declaradas con el calificador \'static\' y variables externas (globales) inician con un valor de cero.

Las variables con almacenamiento de tipo automatico (variables locales) no se inicializan por lo que su valor de inicio es indefinido (o \'undefined\').

Un saludo