美文网首页
C++ 内存布局

C++ 内存布局

作者: 宋大壮 | 来源:发表于2019-03-21 16:09 被阅读0次

堆、栈、静态数据区、常量区、代码区
以下是各个区的作用:
(1)代码区:存放程序代码;
(2)数据区
a.静态数据区: 在编译器进行编译的时候就为该变量分配的内存,即全局变量和静态变量(用static声明的变量),存放在这个区的数据程序全部执行结束后系统自动释放,声明周期贯穿于整个程序执行过程。全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(.data),未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(.bss)。
b.堆区:这部分存储空间完全由程序员自己负责管理,它的分配和释放都由程序员自己负责。这个区是唯一一个可以由程序员自己决定变量生存 期的区间。可以用malloc,new申请对内存,并通过free和delete释放空间。如果程序员自己在堆区申请了空间,又忘记将这片内存释放掉,就 会造成内存泄露的问题,导致后面一直无法访问这片存储区域。但程序退出后,系统自动回收资源。分配方式倒是类似于链表。
c.栈区:存放函数的形式参数和局部变量,由编译器分配和自动释放,函数执行完后,局部变量和形参占用的空间会自动被释放。效率比较高,但是分配的容量很有限。
d.常量区: 存放常量的区间,如字符串常量等,注意在常量区存放的数据一旦经初始化后就不能被修改。 程序结束后由系统释放。

相关文章

  • C++之内存布局

    在C++之内存管理一文中,我们已经了解到C++的内存管理,这里介绍C++的典型内存布局结构。 1、总体来说,C/C...

  • NSObject 底层本质

    一、OC 转 C/C++ 二、NSObject 对象内存布局 三、NSObject 内存大小 四、OC 对象内存布...

  • C++ 内存布局

    堆、栈、静态数据区、常量区、代码区以下是各个区的作用:(1)代码区:存放程序代码;(2)数据区a.静态数据区: 在...

  • c++ 中 struct 的内存布局

    C++ or C 这里讨论的是 C++, 在C中内存布局差不多,但是也不尽相同。如一个空的struct,c++中大...

  • C++继承模型的内存布局

    下面我以Clang++编译器为例阐述一下C++继承模型的内存布局 对于多继承情况 考虑示例代码 有如下内存布局 首...

  • C++ 对象内存布局

    虚函数, 虚基类 同时存在的时候, 对象内存布局的影响。 转自对象内存布局 (16) - CSDN博客 虚基类指针...

  • linux c++ 内存布局

    64位字长 任何虚拟地址高17位必须一致:0000000000000000 - 00007fffffffffff(...

  • C++ 对象内存布局

    可能会对 C++ 对象的内存布局产生影响的因素: 对象的数据成员变量 对象的一般成员函数 对象的虚成员函数 对象继...

  • C++内存对齐及内存布局

    前言   本文会展示内存对齐,及继承、虚继承等各个情况下内存的布局,并根据结果总结使用场景。 基本调试方法   使...

  • 深度探索C++对象模型(内存分布, 虚函数表)

    虽然C++面向对象很容易上手, 但是一直对C++对象的底层实现不知甚解, 得益于vs自带cl命令可以查看内存布局,...

网友评论

      本文标题:C++ 内存布局

      本文链接:https://www.haomeiwen.com/subject/jzccvqtx.html