Leider sind viele der Antworten auf diese Frage, darunter auch die akzeptiert sind richtig aber nicht entspricht dem Code des OP Schnipsel. Denken Sie daran, dass operator new[]
den Standardkonstruktor für jedes Array-Element aufruft. Für POD-Typen wie int
, die keinen Konstruktor haben, sind sie default-initialisiert (lies: null-initialisiert, siehe §8.5 ¶5-7 von The C++ Standard).
Ich tauschte nur malloc
(nicht initialisierten Speicher zuzuteilen) für calloc
(zuteilen genullt Speicher), so das Äquivalent zu dem Snippet C++ gegeben würde
#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;
}
Sorry für die Wiederbelebung dieser alten Frage, aber es hat einfach nicht fühle mich richtig, ohne einen Kommentar zu gehen (für den ich nicht die erforderliche Vertretung habe) ;-)
Sieht so aus, als ob du schon von C++ korrumpiert wurdest;) – gbarry