内存管理读后摘记


1. 调试程序的时候,应该假想自己是一个站在犯罪现场的侦探,而非一个没头的苍蝇。

  不能一个劲的调试,而应该把更多时间用来思考,使用一个调试的计划方案来解决问题。


2. 需要加强理解的东西有:

   泛型编程, 内存管理智能指针,可修改对象实例的对象工厂,使用C/O图表的事件管理和多线程支持


3. C++中, 内存分成:栈、堆、自由存储区、全局/常量存储区, 常量存储区。
   堆,栈的主要区别是: 管理方式不同,空间大小不同,碎片产生与否不同,生长方向不同,

   分配方式不同、分配效率不同。


4. 对于类的 重载运算符 还是非常不熟悉, 通过使用 malloc free 可以实现 从不同固定大小的内

存池中分配不同类型的对象,从而防止了堆破碎。????(从不同固定大小的内存池)


5.常见的内存错误 及其对策
  内存分配未成功,却使用了它。
     如果是函数的参数, 则在函数入口处 使用 assert(p!=NULL)
     或者当使用了 malloc 或 new来申请内存, 应该用 if(p!= NULL) 等来进行防错处理!!!!
  内存分配成功过了并且已经初始化,但是操作越过了内存的边界
  忘记了释放内存,导致了内存泄露。
  释放了内存却继续使用它。
  使用了free 或者delete 释放了内存后,应该将指针设置为NULL
 函数的return 语句 注意不能返回指向“栈内存”的 指针 或者 引用。
 规则: 在用new或malloc申请内存后,应该立即检查指针值是否为NULL

6. 指针变量在创建的同时应当被初始化,要么讲指针设置为NULL,要么让它指向合法的内存。
   指针P被free 或者delete后,没有置为NULL,让人误以为是合法的指针。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值