下载此文档

C内存结构分析.doc


文档分类:IT计算机 | 页数:约7页 举报非法文档有奖
1/7
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/7 下载此文档
文档列表 文档介绍
C内存结构分析.docC••内存结构分析基础知识:—个由C/C++编译的程序占用的内存分为以下几个部分K栈区(stack)一由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)一一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。全局区(静态区)(static)一,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。•程序结束后有系统释放文字常量区一常量字符串就是放在这里的。。'程序代码区戶C++程序的代码和数据是分开存放的,函数的代码都存储于代码区中。栈区堆区系统全局区f'文字常量区静态存储区通常,全局变量,静态局部变量以及文字常量都存储于这块区域中。例子程序//#include<>#include<>//#include<>//malloc的头文件可以为#include<>也可以为#>#include<>inta=0; 全局初始化区char*pl; 全局未初始化区main(){constchar*m="123456";〃指向常量的指针intb;栈chars[]="abcH;栈char*p2;栈char*p3=”123456”;123456在常量区,p3在栈上。staticintc=0;全局(静态)初区pl=(char*)malloc(10);p2=(char*)malloc(20);分配得来得10和20字节的区域就在堆区。strcpy(plz”123456”);123456放在常量区,编译器可能会将它与p3所指向的X23456”优化成一个地方。cout<<(m==p3?l:0)<<endl;//结果为1cout<<(pl==p3?l:0)<<endl;//结果为0cout<<pl«nH<<p3«n”vvendl;//结果为123456123456}函数在栈上创建:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。■堆上创建:从塩t分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程序员自己决定,使用非常灵活。■全局代码区:从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。c:\documentsandsettings\admimstratoconst』:0012FE3CPtu指帘神保岸励值最23p"2指针中保存的值是=274148040对于这个,我们可以看个例子:3voidtest(){staticintconst^a=23:m^a=44:std::cout« 地址是"«&const」«std::endl;std::cou

C内存结构分析 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数7
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小博士
  • 文件大小98 KB
  • 时间2019-07-27