Tuve problemas para inicializar matrices de punteros. Lo que descubrí compilar con gcc C++ (4.6.0) es:Ayuda de inicialización del conjunto de punteros C++
MyClass** a = new MyClass*[100];
no siempre inicializar la matriz de punteros. (La mayoría de las veces se me dio una matriz de punteros nulos que me confunden)
MyClass** a = new MyClass*[100]();
HACE inicializar todos los punteros de la matriz a 0 (puntero nulo).
El código que estoy escribiendo está destinado a ser portátil en plataformas Windows/Linux/Mac/BSD. ¿Es esta una característica especial del compilador gcc C++? o es un estándar C++? ¿Dónde en el estándar dice eso?
Es de suponer que usted se refiere a 'MiClase ** a = new MiClase * [100]()'. Sí, el inicializador 'nuevo' es una característica estándar. Solo estoy cazando una pregunta duplicada. –
No es exactamente un duplicado porque pregunta por qué no (que es incorrecto) en lugar de por qué: http://stackoverflow.com/questions/6717246/no-array-allocated-using-new-can-have-an-initializer ... .pero lo suficientemente cerca. Votando para cerrar. –
La primera versión devuelve la memoria no inicializada, que por supuesto * puede * ser NULL (cero) si no se utiliza anteriormente. La mayoría de los sistemas operativos borran la memoria asignada a un proceso, por razones de seguridad. –