c语言之realloc函数
#### c语言之realloc函数一直以来使用都是使用
```c
char *p = (char*)realloc(p, 512);
```
这样的代码然而仔细读了微软的文档后才发现该函数的返回值
1. 当函数运行成功时返回新开辟的内存空间地址指针(void*)
2. 由于内存不足或其他原因导致函数失败则原来的内存指针不变,但是返回值为nullptr
所以我们写程序的时候应该
```c
char *q = (char*)realloc(p, 512);
if(q)
{
p = q;
}
else
{
free(p);
}
```
如果像第一种写法的话会造成内存泄漏... 是的,上C语言课的时候,讲到这个函数,老师专门强调要每次申请完记得要释放,不释放有可能内存溢出,程序错误 学习一波 学习一下 谢谢分享 ftmovie 发表于 2017-11-26 22:56
谢谢分享
就是一点小细节,怕自己不记得而因小失大 类似的还有malloc函数,使用完后也要释放,其他的如果你使用alloca函数申请内存就可不用释放内存
页:
[1]