问一个较为老的问题,C++程序运行时内存分为几个区域?

有堆区,栈区,还有代码区,全局区,还有。。。请仔细解释下... 有堆区,栈区,还有代码区,全局区,还有。。。请仔细解释下 展开
 我来答
匿名用户
2013-10-25
展开全部
堆区 全局变量是使用相同的内存块在整个类中存储一个值.全局变量、静态数据、常量存放在全局数据区所有类成员函数和非类成员函数代码存放在代码区,为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放在栈区余下的空间都被作为堆区 操作堆内存时,如果分配了内存,就有责任回收它,否则运行的程序将会造成内存泄漏。 栈又称 stack 函数调用栈,其内容和使用内存空间在函数调用期间有效,是编译器负责分配并回收的。

C++中堆栈又称heap - 堆,由程序显式分配和收回,如果不收回就是内存泄漏。 扩展分析:  
1)、程序中有不同的内存段,包括:
  .data - 已初始化全局/静态变量,在整个软件执行过程中有效;
  .bss - 未初始化全局/静态变量,在整个软件执行过程中有效;
  .stack - 函数调用栈,其中的内容在函数执行期间有效,并由编译器负责分配和收回;(使用权不归开发者)
  .heap - 堆,由程序(进程)使用分配和收回,如果不收回就是内存泄漏。
2)、自己使用的内存最好还是自己申请和释放。代码区C++程序是以类为单位来组织代码。类有头文件和源文件,头文件是用来声明类,源文件是用来实现类。多个类文件形成一个工程,工程编译成可执行文件。全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式