博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高质量C/C++编程指南读书笔记(2)
阅读量:2051 次
发布时间:2019-04-28

本文共 952 字,大约阅读时间需要 3 分钟。

7.2.1用malloc或者new申请内存之后,应该立即检查指针值是否为

NULL。防止使用指针值为NULL的内存。
7.2.3动态内存的申请与释放必须配对,防止内存泄漏。
7.2.4用free或delete释放了内存之后,立即将指针设置为NULL,防止
产生“野指针”。

7.7野指针的成因:

(1)指针变量没有被初始化。
(2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个
合法的指针。

7.9内存耗尽问题:

(1)判断指针是否为NULL,如果是则马上用return语句终止本函数。
(2)判断指针是否为NULL,如果是则马上用exit(1)终止整个程序
的运行。
(3)为new和malloc设置异常处理函数。

7.10free的用法:

如果p是NULL指针,那么free对p无论操作多少次都不会出问题。如果p
不是NULL指针,那么free对p连续操作两次就会导致程序运行错误。

8.5一下情况不宜使用内联:

(1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。
(2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数
调用的开销大。
不要随便地将构造函数和西沟函数的定义体放在类声明中。

9.0

C++编译器自动产生四个缺省的函数,如:
A(void);
A(const A &a);
~A(void);
A &operator=(const A &a);
9.1 类的const常量只能在初始化表里被初始化。
9.2 基类与派生类的析构函数应该为虚继承。

11.1

对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const
引用传递”,目的是提高效率。
对于内部数据类型的输入参数,不要将“值传递”的方式改为
“const引用传递”。否则既达不到提高效率的目的,又降低了函数的可
理解性。
11.2函数返回值采用“引用传递”的场合并不多,这种方式一般只出现
在类的赋值函数中,目的是为了实现链式表达。
11.3const成员函数
任何不会修改数据成员的函数都应该声明为const类型。

11.4先优化数据结构和算法,再优化执行代码。

11.5变量(指针、数组)被创建之后应当及时把它们初始化,以防止
把未被初始化的变量当成右值使用。

转载地址:http://fwklf.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-30》31.下一个排列
查看>>
Leetcode C++《热题 Hot 100-40》64.最小路径和
查看>>
Leetcode C++《热题 Hot 100-41》75.颜色分类
查看>>
Leetcode C++《热题 Hot 100-42》78.子集
查看>>
Leetcode C++《热题 Hot 100-43》94.二叉树的中序遍历
查看>>
Leetcode C++ 《第175场周赛-1 》5332.检查整数及其两倍数是否存在
查看>>
Leetcode C++ 《第175场周赛-2 》5333.制造字母异位词的最小步骤数
查看>>
Leetcode C++ 《第175场周赛-3》1348. 推文计数
查看>>
Leetcode C++《热题 Hot 100-44》102.二叉树的层次遍历
查看>>
Leetcode C++《热题 Hot 100-45》338.比特位计数
查看>>
读书摘要系列之《kubernetes权威指南·第四版》第一章:kubernetes入门
查看>>
Leetcode C++《热题 Hot 100-46》739.每日温度
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
[Kick Start 2020] Round A 1.Allocation
查看>>
[Kick Start 2020] Round A 2.Plates
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>