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; }
相关文章推荐
- [LeetCode] Contains Duplicate & Contains Duplicate II
- 5分钟学会AIDL
- [LeetCode]Contains Duplicate II
- Minimum Average Waiting Time
- make_pair
- golang 的 sync.WaitGroup
- 捕获fail2ban截获的Ip写入拒绝主机列表
- ArtifactTransferException: Failure to transfer xalan:xalan:jar:2.6.0 from http://repo.maven.apache.o
- AIX telnet: connect: Cannot reach the destination network.
- DNA repair问题
- SSH远程连接报错:Could not connect to '10.43.2.113' (port 22): Connection failed.
- leetcode--Contains Duplicate
- Postfix maillog邮件发送各阶段延时的日志记录
- JetBrain WebStorm 注册码
- naive bayes
- To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
- hdu1151 Air Raid
- Song -----See You Again
- 【转载】failed to create virtual machine
- [翻译] JHChainableAnimations