c++ 归纳总结

1.坚持下列措施可以避免内存越界:
? 数组的大小要考虑最大情况,避免数组分配空间不够。
? 避免使用危险函数sprintf /vsprintf/strcpy/strcat/gets操作字符串,使用相对安全的函数snprintf/strncpy/strncat/fgets代替。
? 使用memcpy/memset时一定要确保长度不要越界
? 字符串考虑最后的’\0’, 确保所有字符串是以’\0’结束
? 指针加减操作时,考虑指针类型长度
? 数组下标进行检查
? 使用时sizeof或者strlen计算结构/字符串长度,避免手工计算

2.坚持下列措施可以避免内存泄漏:
? 异常出口处检查内存、定时器/文件句柄/Socket/队列/信号量/GUI等资源是否全部释放
? 删除结构指针时,必须从底层向上层顺序删除
? 使用指针数组时,确保在释放数组时,数组中的每个元素指针是否已经提前被释放了
? 避免重复分配内存
? 小心使用有return、break语句的宏,确保前面资源已经释放
? 检查队列中每个成员是否释放

3.坚持下列措施可以避免引用已经释放的内存空间:
? 内存释放后,把指针置为NULL;使用内存指针前进行非空判断。
? 耦合度较强的模块互相调用时,一定要仔细考虑其调用关系,防止已经删除的对象被再次使用。
? 避免操作已发送消息的内存。
? 自动存储对象的地址不应赋值给其他的在第一个对象已经停止存在后仍然保持的对象(具有更大作用域的对象或者静态对象或者从一个函数返回的对象)


4.使用线程池机制,避免线程频繁创建、销毁的系统调用;使用内存池,对于频繁申请、释放的小块内存,一次性申请一个大块的内存

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值