Unfortunately, many of the answers to this question, including the accepted one, are correct but not equivalent to the OP's code snippet. Remember that operator new[]
calls the default constructor for every array element. For POD types like int
that do not have a constructor, they are default-initialized (read: zero-initialized, see §8.5 ¶5-7 of The C++ Standard).
I just exchanged malloc
(allocate uninitialized memory) for calloc
(allocate zeroed memory), so the equivalent to the given C++ snippet would be
#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 for reviving this old question but it just didn't feel right to leave without a comment (which I do not have the required rep for) ;-)