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;
}