c++内存管理学习纲要
本系列文章,主要是学习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;
c++内存管理学习纲要的更多相关文章
- 【转】c++内存管理学习纲要
http://blog.csdn.net/zhanghefu/article/details/5003407 转自:http://blog.csdn.net/wdzxl198/article/deta ...
- C++内存管理学习笔记(5)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(6)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(7)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(4)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(3)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(2)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- C++内存管理学习笔记(1)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- Linux内存管理学习资料
下面是Linux内存管理学习的一些资料. 博客 mlock() and mlockall() system calls. All about Linux swap space 逆向映射的演进 Linu ...
随机推荐
- windows下常用快捷指令记忆
快速打开环境变量窗口 sysdm.cpl --系统设置 快速打开远程桌面程序 mstsc ---Microsoft terminal services client 快速打开事件查看器 eventvw ...
- [Laravel框架学习二]:Laravel的CURD和查询构造器的CURD,以及聚合函数
public function index() { //return Member::getMember();//这是调用模型的方法 return view('lpc',[ 'age'=>18, ...
- python 携程asyncio 实现高并发示例2
https://www.bilibili.com/video/BV1g7411k7MD?from=search&seid=13649975876676293013 import asyncio ...
- Python之小型信息管理系统
#Author:msq #Time:2019/11/16 import re import os filename = "person.txt" def menu(): #输出菜单 ...
- python爬虫(1)requests库
在pycharm中安装requests库的一种方法 首先找到设置 搜索然后安装,蓝色代表已经安装 requests库中的get请求 与HTTP协议相对应,requests库也有七种请求方式. 获取ur ...
- [SketchUp]-绘制自己的家
[SketchUp]-绘制自己的家 softsketchuphome 简介 最近已经完成了 毕业论文, 等待盲审的过程中, 将过去几年做的东西也都一一整理了, 硬盘中好几个不敢动的文件夹 也都可以删除 ...
- Scala教程之:深入理解协变和逆变
文章目录 函数的参数和返回值 可变类型的变异 在之前的文章中我们简单的介绍过scala中的协变和逆变,我们使用+ 来表示协变类型:使用-表示逆变类型:非转化类型不需要添加标记. 假如我们定义一个cla ...
- String、String[]、ArrayList<String>之间的转换
1. ArrayList<String> 转换为 String[]: ArrayList<String> list = new ArrayList<>(); li ...
- Zookeeper之Error contacting service. It is probably not running.
安装ZooKeeper时,无论是修改zoo.cfg:还是myid,都检查了几遍都没有错误.但是开启Zookeeper服务时出现: Error contacting service. It is pro ...
- Aurora: 来自 Amazon 的高性能的企业级关系数据库,兼容 MySQL
近日,在美国召开的AWS re:Invent云计算大会上,Amazon高级副总裁安迪·杰西发布了企业级关系数据库Aurora.Aurora是一个面向Amazon RDS(关系数据库服务).兼容MySQ ...