在这一章节,干货满满但是需要遵守的规则却很少,推荐大家具体去看看书籍。
第七章
7.1 内存分配方式(无)
7.2 常见的内存错误及其对策
【规则 7-2-1】用 malloc 或 new 申请内存之后,应该立即检查指针值是否为 NULL。防止使用指针值为 NULL 的内存。
【规则 7-2-2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。
【规则 7-2-3】避免数组或指针的下标越界,特别要当心发生“多 1”或者“少 1”操作。
【规则 7-2-4】动态内存的申请与释放必须配对,防止内存泄漏。
【规则 7-2-5】用 free 或 delete 释放了内存之后,立即将指针设置为 NULL,防止产生“野指针”。
7.3 指针与数组的对比(无)
7.4 指针参数是如何传递内存的?(无)
7.5 free 和 delete 把指针怎么啦?(无)
7.6 动态内存会被自动释放吗?
(1)指针消亡了,并不表示它所指的内存会被自动释放。
(2)内存被释放了,并不表示指针会消亡或者成了 NULL 指针。
7.7 杜绝“野指针”
(1)指针变量没有被初始化。
(2)指针 p 被 free 或者 delete 之后,没有置为 NULL,让人误以为 p 是个合法的指针。
(3)指针操作超越了变量的作用范围。
7.8 有了 malloc/free 为什么还要 new/delete ?(无)
7.9 内存耗尽怎么办?
(1)判断指针是否为 NULL,如果是则可以马上用 return 语句终止本函数。
(2)判断指针是否为 NULL,如果是则可以马上用 exit(1)终止整个程序的运行。
(3)为 new 和 malloc 设置异常处理函数。
7.10 malloc/free 的使用要点(无)
7.11 new/delete 的使用要点(无)
7.12 一些心得体会
(1)越是怕指针,就越要使用指针。不会正确使用指针,肯定算不上是合格的程序员。
(2)必须养成“使用调试器逐步跟踪程序”的习惯,只有这样才能发现问题的本质。