Por desgracia, muchas de las respuestas a esta pregunta, incluido el aceptado una, son correcta pero no equivalente al código del fragmento OP. Recuerde que operator new[]
llama al constructor predeterminado para cada elemento de la matriz. Para los tipos de POD como int
que no tienen un constructor, se inicializan por defecto (léase: inicializado en cero, consulte §8.5 ¶5-7 de The C++ Standard).
acabo intercambiaron malloc
(asignar memoria sin inicializar) para calloc
(asignar memoria en cero), por lo que el equivalente al fragmento dado C++ sería
#include <stdlib.h> /* atoi, calloc, free */
int main(int argc, char *argv[]) {
size_t size = atoi(argv[1]);
int *foo;
/* allocate zeroed(!) memory for our array */
foo = calloc(sizeof(*foo), size);
if (foo) {
/* do something with foo */
free(foo); /* release the memory */
}
return 0;
}
Lo siento por la reactivación de esta vieja pregunta, pero simplemente no lo hicieron se siente bien al irme sin un comentario (que no tengo el representante requerido) ;-)
Parece que también ha sido corrompido por C++;) – gbarry