您的位置 首页 测评

程序的内存分配

答:一个由cC++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操

答:一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)—由编译器主动分配开释,寄存函数的参数值,局部变量的值等。其操作方法类似于数据结构中的栈。
2、堆区(heap)—一般由程序员分配开释,若程序员不开释,程序完毕时或许由OS收回。留意它与数据结构中的堆是两回事,分配方法却是类似于链表,呵呵。
3、大局区(静态区)(static)—大局变量和静态变量的存储是放在一块的,初始化的大局变量和静态变量在一块区域,未初始化的大局变量和未初始化的静态变量在相邻的另一块区域。程序完毕后由体系开释。
4、文字常量区—常量字符串便是放在这儿的。程序完毕后由体系开释。
5、程序代码区—寄存函数体的二进制代码

比如程序
这是一个长辈写的,十分具体
//main.cpp
inta=0;//大局初始化区
char*p1;//大局未初始化区
main()
{
intb;栈
chars[]=”abc”;//栈
char*p2;//栈
char*p3=”123456″;//123456在常量区,p3在栈上。
staticintc=0;//大局(静态)初始化区
p1=(char*)malloc(10);
p2=(char*)malloc(20);//分配得来得10和20字节的区域就在堆区。
strcpy(p1,”123456″);//123456放在常量区,编译器或许会将它与p3所向”123456″优化成一个当地。
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/256764.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部