1. 调试程序的时候,应该假想自己是一个站在犯罪现场的侦探,而非一个没头的苍蝇。
不能一个劲的调试,而应该把更多时间用来思考,使用一个调试的计划方案来解决问题。
泛型编程, 内存管理智能指针,可修改对象实例的对象工厂,使用C/O图表的事件管理和多线程支持
堆,栈的主要区别是: 管理方式不同,空间大小不同,碎片产生与否不同,生长方向不同,
分配方式不同、分配效率不同。
存池中分配不同类型的对象,从而防止了堆破碎。????(从不同固定大小的内存池)
内存分配未成功,却使用了它。
如果是函数的参数, 则在函数入口处 使用 assert(p!=NULL)
或者当使用了 malloc 或 new来申请内存, 应该用 if(p!= NULL) 等来进行防错处理!!!!
内存分配成功过了并且已经初始化,但是操作越过了内存的边界
忘记了释放内存,导致了内存泄露。
释放了内存却继续使用它。
使用了free 或者delete 释放了内存后,应该将指针设置为NULL
函数的return 语句 注意不能返回指向“栈内存”的 指针 或者 引用。
规则: 在用new或malloc申请内存后,应该立即检查指针值是否为NULL
6. 指针变量在创建的同时应当被初始化,要么讲指针设置为NULL,要么让它指向合法的内存。
指针P被free 或者delete后,没有置为NULL,让人误以为是合法的指针。