#include <stdio.h>
#include <stdlib.h>
int main()
{
int* p = (int*)malloc(40);
if (p!=NULL)
{
;
}
for (int i = 0; i < 10; i++)
{
printf("%d", p[i] = i);
}
printf("\n");
int* ptr = NULL;
ptr = (int*)realloc(p, 80);
if (ptr != NULL)
{
p = ptr;
}
for (int i = 0; i < 20; i++)
{
printf("%d", p[i] = 1);
}
free(p);
p = NULL;
return 0;
}
首先 我用Linux进行简单测试,倒是没有什么警告。可能编译器相关
这句啥意思啊:
if (p!=NULL)
{
;
}
如果p是空,还要往p里循环赋值的话就会出问题。
应该把这块直接替换成
if(p==NULL)exit(-1);//或return -1;