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本身是在栈当中)

 

猜你喜欢

转载自www.cnblogs.com/lyp1010/p/11696799.html
今日推荐