设为首页 加入收藏

TOP

C++程序内存分配详解
2014-11-24 02:31:53 来源: 作者: 【 】 浏览:1
Tags:程序 内存 分配 详解

1. 硬盘中的结构——程序


首先在Linux下查看一下test文件的信息:


[root@localhost Ctest]# file test //此文件基本情况
test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
[root@localhost Ctest]# size test //此二进制可执行文件结构情况


text data bss dec hex filename
906 284 4 1194 4aa test


//代码区静态数据/全局初始化数据区 未初始化数据区 十进制总和 十六进制总和 文件名


此可执行程序在存储时(没有调入到内存)分为代码区(text)、数据区(data)和未初始化数据区(bss)3个部分


程序调入内存(执行时),其结构如下:




(1)Stack(栈区):局部变量 由编译器自动分配释放


(2)Heap(堆区):动态变量,由new /malloc分配的数据 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收


(3)BSS(Uninitiated Data):全局变量,static,常量 程序结束后由系统释放


(4)Data(Initialized Data):全局变量,static,常量 程序结束后由系统释放


(5)Text(代码区):存放函数体(类成员函数和全局函数)的二进制代码(可以理解为存放的就是代码) 程序结束后由系统释放


参考


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇百度2014校园招聘研发工程师笔试.. 下一篇C/C++程序内存分配详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: