吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2673|回复: 7
收起左侧

[C&C++ 转载] c语言之realloc函数

[复制链接]
rjhokj 发表于 2017-11-26 16:27
c语言之realloc函数

一直以来使用都是使用

char *p = (char*)realloc(p, 512);

这样的代码然而仔细读了微软的文档后才发现该函数的返回值

  1. 当函数运行成功时返回新开辟的内存空间地址指针(void*)
  2. 由于内存不足或其他原因导致函数失败则原来的内存指针不变,但是返回值为nullptr

所以我们写程序的时候应该

char *q = (char*)realloc(p, 512);
if(q)
{
    p = q;
}
else
{
    free(p);
}

如果像第一种写法的话会造成内存泄漏...

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
iamcjsyr + 1 + 1 谢谢@Thanks!
kyrzy0416 + 1 + 1 谢谢@Thanks!
vivianx77 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

半步散人 发表于 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

就是一点小细节,怕自己不记得而因小失大
wew099057 发表于 2017-11-28 13:21
类似的还有malloc函数,使用完后也要释放,其他的如果你使用alloca函数申请内存就可不用释放内存
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 08:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表