内存管理

1.C++程序的内存格局分四个区: 1.全局数据区/静态区/字符串常量:全局变量、进态数据、常量

                 2.代码区:所有类成员函数代码、非成员函数代码

3.栈区/堆栈:为运行函数而分配的局部变量、函数参数、返回数据、返回地址

4.堆区:malloc/free或new delete,从堆中分配和释放内存块

2.使用堆空间的情况: 1.直到运行时才能知道需要多少对象空间

2.不知道对象的生存期到底有多长

3.直到运行时才知道一个对象需要多少内存空间

3.new/delete是C++的运算符,它们都可用于申请动态内存和释放内存。 构造函数可以有参数。所以在new后面的类类型也可以有参数。 类名 *变量名 = new 类名(....);右边在堆中开辟空间存放的是类的对象,左边在栈中开辟空间存放的是变量,这个变量是一个地址,它指向的是堆空间的地址。 new数组:类名 *变量名 = new 类名[元素个数]; 从堆中分配对象数组时,只能调用无参的默认构造函数,没有默认的构造函数的类,不能分配对象数组。

4.堆对象析构是在释放堆对象语句delete执行之时。 局部对象在该对象退出作用域时自动调用析构函数,但在堆对象中作用域是整个程序的生命周期,所以除非程序运行完毕,否则堆对象作用域不会到期。 delete 变量名;或delete[] 变量名; 变量名 = NULL;

5.形参是引用时,实际上传的是地址,即指向的地址。

malloc只关心内存大小

时间: 2024-10-21 09:16:45

内存管理的相关文章

effective OC2.0 52阅读笔记(五 内存管理)

第五章:内存管理 29 理解引用计数 30 以ARC简化引用计数 总结:ARC通过命名约定将内存管理规则标准化.其他编程语言很少像OC这样强调命名.ARC通过设置全局数据结构(此数据结构的具体内容因处理器而异)中的一个标志位,来代替直接调用autorelease和retain.这是ARC所带来的好处.待编译器与运行期组件日臻成熟,还会出现其他的优化技术.CoreFoundation对象不归ARC管理,开发者必须适时调用CFRetain/CFRelease. 31 在dealloc方法中只释放引用

《Effective C++》内存管理

如果global new-hander没有成功配置,会抛出一个std::bad_alloc的exception. #include<iostream> #include<new> #include<climits> using namespace std; template<class T> class NewHandlerSupport{ public: static new_handler set_new_handler(new_handler p);

[自制简单操作系统] 3、内存管理和窗口叠加

1.本次主要进展 >_<" 这次主要学习了系统内存管理和窗口叠加~由于上两篇都做了详细的框架说明和介绍,这里直接上代码! 2.文件及函数构成 >_<" 这里和第二篇相比,把鼠标和键盘的相关函数独立出来放进各自相应的文件中,并主要在内存管理和窗口叠加进行探索,同时还有部分代码整理~ 1 /* In this file, not only have the defination of the function, but also 2 hava the descrip

&lt;Linux内核源码&gt;内存管理模型

题外语:本人对linux内核的了解尚浅,如果有差池欢迎指正,也欢迎提问交流! 首先要理解一下每一个进程是如何维护自己独立的寻址空间的,我的电脑里呢是8G内存空间.了解过的朋友应该都知道这是虚拟内存技术解决的这个问题,然而再linux中具体是怎样的模型解决的操作系统的这个设计需求的呢,让我们从linux源码的片段开始看吧!(以下内核源码均来自fedora21 64位系统的fc-3.19.3版本内核) <include/linux/mm_type.h>中对于物理页面的定义struct page,也

Objective-C:内存管理

1 传统内存管理 Objective-C对象的生命周期可以分为:创建.存在.消亡. 1.1 引用计数 类似Java,Objective-C采用引用计算(reference counting)技术来管理对象的生命周期.每个对象都定义有一个整数(称引用计数器)与之相关联,该数用以表示当前有多少个指针指向该对象. 1.1.1 操作方法 当某段代码需要访问一个对象时,该代码就将对象的保留计数值加1:当结束访问时就减1:若引用计数器减到0时,该对象将被销毁.引用计数器的值由如下三种操作进行控制: 创建 当

C++内存管理学习笔记(2)

/****************************************************************/ /*            学习是合作和分享式的! /* Author:Atlas                    Email:[email protected] /*  转载请注明本文出处: *   http://blog.csdn.net/wdzxl198/article/details/9059883 /************************

c++内存管理学习纲要

本系列文章,主要是学习c++内存管理这一块的学习笔记. 时间:6.7-21 之下以技术内幕的开头语,带入到学习C++内存管理的技术中吧: 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,因此要想成为C++高手,内存管理一关是必须要过的! 笔记汇总: 1.C++内存管理学习笔记(1) 2.C++内存管理学习笔记(2) 3.C++内存管理学习笔记(3) 4.C++内存管理学习笔记(4) 5.C++内存管理学习笔记(5) 6.C++内存管理学习笔记(6) 7.C++内存管理学习笔记(7

Erlang 虚拟机内的内存管理(Lukas Larsson演讲听写稿)

Erlang核心开发者Lukas Larsson在2014年3月份Erlang Factory上的一个演讲详细介绍了Erlang内存体系的原理以及调优案例: http://www.erlang-factory.com/conference/show/conference-6/home/#lukas-larsson 在这里可以下载slides和观看视频(为了方便不方便科学上网的同学,我把视频搬运到了 http://v.youku.com/v_show/id_XNzA1MjA0OTEy.html )

酒逢知己,雨后甘霖---C++之内存管理

特别警告:本文非本人所写,但阅读后真的受益匪浅,内心有激昂澎湃之势,特以"原创"之由分享于此,感谢原作者的无私奉献!由于最近在研究<Effective C++>等书籍的原因,真是发自内心的感受到了C++的博大精深,以至与作者共鸣,特记于此! 原文链接:http://blog.csdn.net/zhaozhao531322/article/details/13628963 [导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能

揭开Java内存管理的面纱

前言 相对于C.C++这些高性能语言,Java有着让此类程序员羡慕的功能:内存自动管理.似乎这样,Java程序员不用再关心内存,也不用去了解相关知识.但结果真的是这样吗?特别对于我们这种Android程序员来说,对内存可是吃得死死的,一旦出现较为复杂的内存泄露和溢出方面的问题,简直就是噩梦.因此,对Java内存管理有个大体的了解似乎已经成为一个合格的Android程序员必备的技能,就算是新进的Kotlin同样是基于JVM的.不如趁此机会,大家一起来揭开它的面纱. 对象 Java是一门面向对象的编