原始问题
我能使用realloc()
函数来实现以下代码吗:
int *ptr, i, num=5;
for (i=0; i<num; i++)
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
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();
}
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;
}
}
ptr
都是NULL
。如果ptr
是空指针,则函数的行为类似于malloc,分配一个新的大小为字节的块,并返回其开头的指针。 - BlackMamba
ptr
没有初始化。 - BLUEPIXY