内存的三种分配方式:静态存储区分配,栈上分配,堆上分配。
内存使用常见错误:
(1)内存分配不成功,却使用它。对策:使用前检查内存是否为NULL。
(2)内存分配成功,但没有初始化就使用它。对策:内存分配后初始化。
(3)内存分配成功且已经初始化,但是越界。对策:做越界检查。
(4)忘记释放内存,造成内存泄漏。对策:内存动态分配和释放必须成双配对。
(5)释放了内存却继续使用它。
(a)对象关系过于复杂,理不清楚究竟释放了没有。
(b)return指向栈内存的指针或引用。
(c)free或delete内存后,没有把指针置为NULL。导致野指针。
指针与数组。数组名对应着(而不是指向)一块内存,在生存期内,其地址不可改变,只能是数组内容改变。
sizeof():
sizeof(数组)= 数组元素个数*sizeof(数组的元素数据类型)。
sizeof(指针)= 4;
数组作为参数传递时,数组名自动退化为指针类型,即sizeof(数组)=4;
sizeof(结构体或者类):这个有点麻烦,和编译器的设置有关系,pragma pack(n)是编译器指定的内存字节对齐方式,sizeof(结构或者类)和pragma pack(n)关系密切,默认的n=8,结构中的成员占用的内存起始地址为成员的数据类型的大小和n相比较的较小值。
指针参数:
不要让指针参数在函数体内部申请内存,如果非要指针在函数体内部申请内存,就要用指针的指针。函数的返回值不能使用栈内分配的变量地址。
野指针:用malloc和new 分配了内存,就得用free和delete 释放,否则造成内存泄漏,但是只释放内存还是不够安全的,必须在释放内存后,让指针指向NULL,才不至于造成野指针。我理解的野指针就是没有正确指向的指针。
《高质量C++编程指南:内存管理》学习笔记
《高质量程序设计指南》热门书评
-
Beyond Tech Interview
8有用 0无用 丸子(^.^)v 2014-05-30
2014年5月29日下午7点19, 跟google约定的面试在5天以后进行, 这个时间心心念念都是各种面经各种网上经历各种coding interview exposed啥的 = = 但我在开始临阵磨枪前专门抽时间看了几本所谓内功修行指南, 这本是其中之一。 就个人经历来说, 我觉得无论大陆还是北美...
-
此书的一些错误
5有用 1无用 库伯蒂诺 2013-05-26
original poster: @幻の上帝林锐博士在写这本书的时候毕竟很早了,所以书中出现了很多错误。第1章 文件结构每个C++/C程序通常分为两个文件。//错误。没有强调翻译单元的概念。另一个文件用于保存程序的实现(implementation),称为定义(definition)文件。//有误。...
-
曾经的经典
4有用 0无用 yan97ao 2010-10-31
这是一本曾经被很多人奉为经典的书,据说不少公司曾经直接作为招聘的笔试题。我在高中的时候看过第一版,也帮助我养成了不少受用至今的好习惯,然后稀里糊涂地考上了西电技术物理学院,做了林锐的学弟。我是在考上西电计算机院之后买了这本书的第三版,也就是我成为韩永泉的学弟的时候……看我们老师上课时候给的示例代码里...
-
国人写的最好一本C++技术书籍
4有用 0无用 Wuqifu 2012-04-30
国人所写的C++技术书籍大多很坑爹!难得这本是个例外,值得一读,尤其是对计算机系毕业生而言。这本书出自经验丰富的一线软件工程师之手,比某些大学里闭门造车的教授们东拼西凑的教程强太多了!本书也就定位在初、中级C/C++技术水平。你不可能通过本书学会C++,也不能读过此书就精通了C++,这本书只是众多C...
-
《高质量C++编程指南:内存管理》学习笔记
2有用 1无用 feosun 2008-07-05
内存的三种分配方式:静态存储区分配,栈上分配,堆上分配。内存使用常见错误: (1)内存分配不成功,却使用它。对策:使用前检查内存是否为NULL。(2)内存分配成功,但没有初始化就使用它。对策:内存分配后初始化。(3)内存分配成功且已经初始化,但是越界。对策:做越界检查。(4)忘记释放内存,造成内存泄...

