首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++的内存储器格局

2012-11-05 
关于C++的内存格局C程序的内存局通常分为四个区:1 全局数据区(data area)2 代码区(code area)3 绽区(stack

关于C++的内存格局

C++程序的内存格局通常分为四个区:

1 全局数据区(data area)

2 代码区(code area)

3 绽区(stack area)

4 堆区(即自由存储区)(heap area)


全局变量、静态数据、常量存放在全局数据区

所有所有类成员函数和非成员函数代码存放在代码区

为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放在栈区

余下的空间都被作为堆区


函数“void *malloc(size_t);”和"void free(void *);"在头文件malloc.h中声明,而操作符new和delete是C++语言的一部分,无须包含头文件。他们都从堆中分配和释放内存,但在具体操作上两者有很大的区别。

操作堆内存时,如果分配了内存,就有责任回收塔,否则运行的程序将会造成内存泄露。这与函数中在栈区中分配局部变量有本质的不同。

对C++来说,管理堆区是一件十分复杂的工作,频繁的分配和释放不同大小的堆空间,将会产生堆内存碎块!


摘自《C++程序设计教程——设计思想与实现》 钱能著

热点排行