您的位置:首页 > 大数据 > 人工智能

Common realloc mistake: 'd_data' nulled but not freed upon failure

2015-05-29 13:42 1001 查看
CppCheck进行源码安全性扫描时出现的error警告,会在realloc函数失败时导致原有申请的内存引用丢失而原有申请的内存并未被释放而导致内存泄漏,因此需要先保留realloc函数之前已有的内存指针,在realloc后判断是否成功,成功再进行赋值,这样失败以后保留了原申请内存的引用不会导致内存泄漏。

错误范例:

d_data = (char *)realloc (d_data, size*sizeof(char));


解决办法:

char *new_data = (char *)realloc (d_data, size*sizeof(char));
if (new_data == NULL)
{
// could not realloc, but orig still valid
cout<<”realloc failed”<<endl;
}
else
{
d_data = new_data;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: