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 }TRANSLATE with x English
Arabic | Hebrew | Polish |
Bulgarian | Hindi | Portuguese |
Catalan | Hmong Daw | Romanian |
Chinese Simplified | Hungarian | Russian |
Chinese Traditional | Indonesian | Slovak |
Czech | Italian | Slovenian |
Danish | Japanese | Spanish |
Dutch | Klingon | Swedish |
English | Korean | Thai |
Estonian | Latvian | Turkish |
Finnish | Lithuanian | Ukrainian |
French | Malay | Urdu |
German | Maltese | Vietnamese |
Greek | Norwegian | Welsh |
Haitian Creole | Persian |