三九宝宝网宝宝教育学龄段教育

C++内存管理的简单归纳

11月11日 编辑 39baobao.com

[如何提高自己的归纳总结能力]问题1:你真以为王利芬归纳的佳宾的观点吗?你真以为王利芬是在场上做的归纳吗?作为CCTV的大牌节目的主持人,都是千锤百炼,即使是完全不做准备,也是离不开几十数百场主持的功夫。...+阅读

这篇文章主要是针对c++程序中可能出现的内存错误做一些间单的归纳。是看了Rational Purify的使用和分析之后做的提炼。相信很多初级的c++程序员也像我一样曾被这些问题困惑,希望对各位看官有所帮助。

一、内存错误的分类

a.内存访问错误

对内存进行读或写时发生的错误,考试大提示:可能是读未被初始化的内存单元,也可能是读写错误的内存单元。

b.内存使用错误

主要是在动态请求内存之后没有正确释放产生的错误。

二、内存剖析(典型的c++内存模型)

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。(其实我不太明白既然都是存全局变量的,那为什么要把已初始化的和未初始化的分开在两个段中进行管理)

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。

除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

c++不同于C&emsp、Ja的一个地方是它可以动态管理内存,但鱼与熊掌两者不可兼得,灵活性的代价是程序员需要花费更多的精力保证代码不发生内存错误。

三、常见的内存访问错误和内存使用错误

具体来说,内存访问错误有下面这几种:访问未被初始化的内存单元、数组访问错误、访问无效的内存单元(0x000000,0x000005等)、写无效内存。

而内存使用错误有:

1、请求内存之后没有将它释放,使new和delete成对出现可以避免这样的问题。

2、释放一块内存后又再释放一次。

四、例子

1 &emspinclude

2 using namespace std;3 int main(){4 char* str1="four";5 char* str2=new char[4]; not enough space6 char* str3=str2;7 cout

以下为关联文档:

一级建造师《项目管理》知识点归纳总结369.项目人力资源管理的目的是:调动所有项目参与人的积极性,在项目承担组织的内部和外部建立有效的工作机制,以实现项目目标。70.组织和人力资源规划是识别、确定和分派项目角...

一级建造师《项目管理》知识点归纳总结131Z206090 建设工程监理合同1.委托人委托监理人监理的工程概况,包括工程名称,工程地点,工程规模,总投资。2.建设工程委托监理合同在履行过程中发生争议时,委托人与监理人应及时...

一级建造师《项目管理》知识点归纳总结141Z207010 建设工程信息管理1.信息管理是指信息传输的合理的组织和控制2.项目信息管理的目的指在通过有效的项目信息传输的组织和控制为项目建设的增值服务3.建设工程项目...

一级建造师《项目管理》知识点归纳总结61Z204000 质量控制1Z204010 质量控制的原理1.质量控制包括采取的作业技术和管理活动。质量控制是质量管理的一部分。质量控制是在明确的质量目标条件下通过行动方案和资源...

一级建造师《项目管理》知识点归纳总结71Z204030 施工质量控制和验收1.施工质量控制的总体目标是贯彻执行建设工程质量法规和强制标准,正确配置施工生产要素和采用科学管理的方法,实现工程预期的使用功能和质量标准...

一级建造师《项目管理》知识点归纳总结111Z206030 建设工程合同的主要内容1.建设工程总承包合同的主要条款:①词语涵义及合同文件的组成②总承包的内容③双方当事人的权得义务④合同履行期限⑤合同价款⑥工程质量与...

一级建造师《项目管理》知识点归纳总结121Z206070 工程物资采购合同1.材料采购合同订立的方式:①公开招标②邀请招标③直接采购2.设备采购合同订立的方式:①招标投标②委托承包商配套供应③按设备包干1Z206080 国...

一级建造师《项目管理》知识点归纳总结91Z205030 施工安全控制的方法 1.危险源是可能导致人身伤害或疾病,财产损失,工作环境破坏或这所情况组合的危险因素和有害因素。 2.危险因素强调突发性和瞬间作用的因素,有害因...

一级建造师《项目管理》知识点归纳总结101Z206000 建设工程合同与工程管理 1Z206010 工程订立的主要方式 1.建设工程施工招标的必备条件:①招标人已经依法成立②初步设计及概算已经批准③招标范围、招标方式和招标组...

推荐阅读
图文推荐