本系列文章,主要是学习c++内存管理这一块的学习笔记。
时间:6.7-21
之下以技术内幕的开头语,带入到学习C++内存管理的技术中吧:
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,因此要想成为C++高手,内存管理一关是必须要过的!
笔记汇总:
7.C++内存管理学习笔记(7)(完)
番外篇:
1.C/C++数组和指针详解;
2.c++中复制控制详解(copy control);
个人认为,学习的态度是:不管是看书籍,看blog,看资料都要有怀疑和深究的态度!
以下部分是学习内存管理的资料,随着学习的不断深入,我相信资料也会越来越多!
相关书籍:
1.《C++内存管理技术内幕》(Download)
2.《深入理解 Linux 虚拟内存管理》翻译版,Mel Gorman 著 译者:白洛 李俊奎 刘森林(Download)
3.《池内春秋》作者:侯捷(Download)
4.《UNIX高级环境编程》(Download)
5.《c专家编程 expert c programing》(Download)
6.《C++ primer》(Download)
7.《STL源码分析》(Download)
相关博客:
1.内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结(author:小虾米的窝):http://space.itpub.net/16856446/viewspace-612834;
2.C和C++中内存分配的细节:http://www.cnblogs.com/sj20082663/archive/2013/04/23/3037181.html;
3.C++ 工程实践(2):不要重载全局 ::operator new():http://blog.csdn.net/solstice/article/details/6198937;
4.new、delete(new[]、delete[])操作符的重载:http://name5566.com/2339.html;
5.语义"陷阱"---数组和指针:http://www.cnblogs.com/yanlingyin/archive/2011/11/29/2268391.html#commentform;
6.数组和指针背后——内存角度:http://www.cnblogs.com/yanlingyin/archive/2011/12/06/2277821.html;
7.C++ 值传递、指针传递、引用传递详解:http://www.cnblogs.com/yanlingyin/archive/2011/12/07/2278961.html;
8.C++中的类模板详细讲述:http://www.cnblogs.com/assemble8086/archive/2011/10/02/2198308.html;
9.C++类模板:http://blog.sina.com.cn/s/blog_5ea0192f0100cstj.html;
10.C++ Primer 4th 笔记,异常处理,auto_ptr类:http://www.cnblogs.com/mydomain/archive/2011/04/15/2017424.html;
11.泛型编程:源起、实现与意义:http://blog.csdn.net/pongba/article/details/2544894;;
12.C++深度探索系列:智能指针(Smart Pointer) [一]http://www.cppblog.com/bossbird/archive/2008/09/22/62434.html;
13.C++深度探索系列:智能指针(Smart Pointer) [二]:http://blog.csdn.net/redstar81/article/details/19755;
14.auto_ptr 代码及缺陷:http://blog.csdn.net/wuzhekai1985/article/details/6603494;
15.高效使用auto_ptr:http://www.cppblog.com/mymsdn/archive/2010/04/07/Using-auto_ptr-Effectively.html;
16.effective c++ -- 资源管理:http://philoscience.iteye.com/blog/1402928;
17.C++著名程序库的比较和学习经验(STL.Boost.GUI.XML.网络等等) -- ZZ from CU:http://hi.baidu.com/gikidy/item/96082ed10c9d2b14d90e449b;
18.Boost智能指针——shared_ptr:http://www.cnblogs.com/TianFang/archive/2008/09/19/1294521.html;
19.Boost 中的智能指针:http://www.cnblogs.com/sld666666/archive/2010/12/16/1908265.html;
20.C++拷贝构造函数详解:http://blog.csdn.net/lwbeyond/article/details/6202256;
21.C++:复制构造函数在什么时候被调用?:http://www.slyar.com/blog/cpp-copy-constructor.html;
22.C++内存管理变革:http://blog.csdn.net/xushiweizh/article/details/1388982;
相关资料:
1.内存管理内幕(IBM):http://www.ibm.com/developerworks/cn/linux/l-memory/;
介绍:本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存, 以及如何使用垃圾收集自动管理内存。
2.C++内存管理的探讨(1)(2)-(51cto):http://developer.51cto.com/art/201104/254712.htm;
介绍:大家都知道变量的生存周期这个概念,可是有的时候变量生存周期已经结束,但是所分配的那块内存空间还是存在的。文章举了四个不同的例子,来对C++内存管理进入深度探讨,以说明这其中的原因。
3.C++内存管理不同方式分析(51cto):http://developer.51cto.com/art/201002/183110.htm;
介绍:C++内存管理的方式总共有三种,分别为自动存储、静态存储、动态存储。那么如何正确的理解这三种方式呢?在这里我们将会一一做一个介绍。
4.内存管理内幕(1)(2)(3)-(51cto):http://developer.51cto.com/art/200509/3600.htm;
介绍:本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。
5.C++中内存分配详解:http://developer.51cto.com/art/201107/276154.htm;
介绍:我们都知道,内存基本上分为静态存储区、堆区和栈区三大部分。本文介绍的是C++中的内存分配的问题,希望对你有帮助,一起来看。
6.建议33:小心翼翼地重载operator new/ operator delete:http://book.51cto.com/art/201202/317799.htm;
介绍:《编写高质量代码:改善C++程序的150个建议》本书是C++程序员进阶修炼的必读之作,包含的全部都是C++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对C++程序和设计中的疑难问题给出了经验性的解决方案,为C++程序员编写更高质量的C++代码提供了150条极为宝贵的建议。本节为大家介绍建议33:小心翼翼地重载operator new/ operator delete。
7.重载new和delete方法实现C++内存安全:http://www.2cto.com/kf/201210/162563.html
介绍:C++使用new关键字创建的对象,被分配到堆内存空间,然后得到对象地址,当程序复杂庞大时容易发生访问地址bug或内存泄露bug。为了避免内存泄露并在调试程序时找到内存泄露的bug,可以重载new和delete函数,确保程序的内存安全
8.Arrays and Pointers:http://www.functionx.com/cpp/Lesson14.htm
9.C++ Pointer to an Array:http://www.tutorialspoint.com/cplusplus/cpp_pointer_to_an_array.htm;
10.Pointer types and Arrays:http://pw1.netcom.com/~tjensen/ptr/ch2x.htm;
11.C++ pointers vs arrays:http://www.tutorialspoint.com/cplusplus/cpp_pointers_vs_arrays.htm;
12. Array is not pointer:http://www.cplusplus.com/forum/articles/10/;
13.Pointers,Pointers and arrays:http://www.cplusplus.com/doc/tutorial/pointers/ ;
14.数组和指针背后——内存角度:http://www.cnblogs.com/yanlingyin/archive/2011/12/06/2277821.html;
15. 指针、数组和地址间的关系:http://book.51cto.com/art/201103/248065.htm;
介绍:《C语言开发手册(典藏版)》第9章指针,本章首先介绍了C语言中指针的使用,主要包括指针的概念、指针变量的声明和赋值,接着详细讲解了指针和数组的关系及指针的运算规则,然后介绍了指向多维数组的指针。同时,本章还对几种特殊的指针进行了详细的介绍,主要包括字符串指针、指针数组、指向指针的指针、指针和函数等。最后,本章还总结了指针的学习要点。本节为大家介绍指针、数组和地址间的关系。
16.C++类模板应用代码深入剖析:http://developer.51cto.com/art/201002/183044.htm
17.C++中模板使用详解(转):http://www.360doc.com/content/09/0403/17/799_3011262.shtml;
18.More Effective C++之智能指针:http://dev.yesky.com/426/2496426.shtml;
19.详解C++中的Boost智能指针:http://developer.51cto.com/art/201012/239004.htm;
介绍:今天我们要介绍boost中的智能指针的使用。对于内存管理,C++中有两个实现方案: 垃圾回收机制和智能指针。而智能指针被认为是解决C++内存问题的最优方案。
20.What is a smart pointer and when should I use one?:http://stackoverflow.com/questions/106508/what-is-a-smart-pointer-and-when-should-i-use-one
21.C++ 智能指针详解:http://blog.csdn.net/xt_xiaotian/article/details/5714477
22.对C++资源管理内容分析研究:http://developer.51cto.com/art/201001/181314.htm
介绍:在C++资源管理中有这样两个概念,向上类型转换,向下类型转换,分别描述的是子类向基类和基类向子类的强制类型转换。
23.Smart Pointers Overview:http://dlugosz.com/Repertoire/refman/Classics/Smart%20Pointers%20Overview.html;
24.Smart Pointers - What, Why, Which?:http://ootips.org/yonat/4dev/smart-pointers.html;
25.一步一步写STL:定制智能指针(上):http://www.csdn 123.com/html/blogs/20130601/18308.htm;
26.三十分钟掌握STL:http://net.pku.edu.cn/~yhf/UsingSTL.htm;
27.boost库之smart pointer:http://hi.baidu.com/drsuyxtmtlbiltd/item/5aed68f81b79ae13ce9f32bc;
28.Smart Pointers in Boost:http://www.drdobbs.com/cpp/smart-pointers-in-boost/184401507;
29.如何:创建和使用shared_ptr实例:http://msdn.microsoft.com/zh-cn/library/vstudio/hh279669.aspx;
30.class template std::shared_ptr:http://www.cplusplus.com/reference/memory/shared_ptr/;
31.boost::shared_ptr class template:http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/shared_ptr.htm;
32.Boost.shared_ptr必须注意的一些地方:http://www.360doc.com/content/10/1221/15/1801810_80092270.shtml;
33.Smart Pointers to boost your code:http://www.codeproject.com/Articles/8394/Smart-Pointers-to-boost-your-code;
34.Pimpl Idiom:http://c2.com/cgi/wiki?PimplIdiom;
35.C++ Copy Constructor:http://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm;
36.C++ Notes: OOP: Copy Constructors:http://www.fredosaurus.com/notes-cpp/oop-condestructors/copyconstructors.html;
37.Assignment operators overloading in C++:http://www.tutorialspoint.com/cplusplus/assignment_operators_overloading.htm;