C++学习-程序内存分配方式

一、程序的内存布局:

1)栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。其操作方式类似于数据结构中的栈。

2)堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,它与数据结构中的堆是两回事,分配方式类似与链表。

3)全局/静态区(static):全局变量和静态变量存储是放在一块的,在程序编译时分配。

4)文字常量区:存放常量字符串

5)程序代码区,存放函数体(类的成员函数,全局函数)的二进制编码

二、程序示例:

int a=0;//全局初始化区

char *p1;//全局未初始化区

int main()

{

int b;//栈

char s[]="abc";//栈

char *p2;//栈

char *p3="123456";//字符串位于常量区,P3位于栈

static int c=0;//全局静态初始化区

 

p1=new char[10];//p1位于全局区,p1指向的对象位于堆

strcpy(p1,"123456");

 

}

 三、栈和堆的比较:

1、申请方式:(栈是由系统自动分配int p;,堆是要由程序员申请int *p2=new int(10);,p2本身是在栈当中)

 

 

 

posted @ 2019-10-18 10:18  19l92y11p26  阅读(119)  评论(0编辑  收藏  举报
/*鼠标跟随效果*/ /* 点击爆炸效果*/
/*鼠标跟随效果*/
Live2D