c++基础知识-程序内存模型

一、程序内存模型

根据运行前与运行后,一共分为四大区域:

1.程序运行前:代码区、全局区;

2.程序运行后:栈区、堆区;

 

二、代码区

程序运行前写的所有代码,最后全部转换成二进制录入电脑

 

三、全局区

包括:

全局变量:写在函数体之外的变量;

静态变量:在普通变量前加关键字static;

常量:字符串常量与const修饰的全局变量;

 

四、栈区

局部变量、形参;该区域数据是由编译器管理开辟和释放。

注:不要返回局部变量地址!

 

五、堆区

由程序员分配释放,程序结束时由系统回收。

利用new关键字,可将数据开辟到堆区,即地址不会被自动释放。

可利用关键字delete释放数据。

 1 //new基本语法
 2 int* func()
 3 {
 4     int * p=new int(10); //new返回是该数据类型指针
 5     return p;
 6 }
 7 //堆区开辟数组
 8 void test01()
 9 {
10     //创建10整型数据的数据在堆区
11     int* arr = new int[10]; //10代表数组有10个元素
12     for (int i = 0; i < 10; i++)
13     {
14         arr[i] = i + 100;
15     }
16     for (int i = 0; i < 10; i++)
17     {
18         cout << arr[i] << endl;
19     }
20     //释放堆区数组:加中括号
21     delete[] arr;
22 }
23 
24 int main()
25 {
26     int* m = func();
27     cout << *m << endl; //堆区数据不会自动释放
28     //用关键字delete释放
29     delete m;
30     test01();
31 
32 }

 

 

posted @ 2022-01-03 21:22  Whp_bicycle  阅读(52)  评论(0编辑  收藏  举报