原始问题
我可以使用realloc()
函数,如下面的代码:
int *ptr, i, num=5;
for (i=0; i<num; i++)
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
答案 0 :(得分:6)
不,您应该在开头初始化ptr
,然后分配新值
int *ptr = 0;
for (unsigned i=0; i<5; i++) {
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
if (nptr) ptr = nptr;
else abort();
}
否则,在第一次通话时,您可以将一些随机值传递给realloc
。你在后续调用中分配的内存将会丢失。
答案 1 :(得分:-1)
不,您应该使用NULL初始化指针ptr
和nptr
。并在for循环之前声明nptr。
你的代码应该是:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int *ptr=NULL, i, num=5;
void *nptr=NULL;
for (i=0; i<num; i++)
{
nptr = realloc (ptr, (i+1) * sizeof(int) );
if (NULL != nptr)
ptr = nptr;
}
}