rjhokj 发表于 2017-11-26 16:27

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);
}
```
如果像第一种写法的话会造成内存泄漏...

半步散人 发表于 2017-11-26 16:38

是的,上C语言课的时候,讲到这个函数,老师专门强调要每次申请完记得要释放,不释放有可能内存溢出,程序错误

只手过河 发表于 2017-11-26 20:09

学习一波

longhai001 发表于 2017-11-26 20:27

学习一下

ftmovie 发表于 2017-11-26 22:56

谢谢分享

rjhokj 发表于 2017-11-27 10:55

ftmovie 发表于 2017-11-26 22:56
谢谢分享

就是一点小细节,怕自己不记得而因小失大

wew099057 发表于 2017-11-28 13:21

类似的还有malloc函数,使用完后也要释放,其他的如果你使用alloca函数申请内存就可不用释放内存
页: [1]
查看完整版本: c语言之realloc函数