偷偷拿来记录一下萌新的cs路——day17 C++内存四区域
代码区:存放函数二进制代码,由操作系统管理。
全局区:存放全局变量(在所有函数外部定义的变量,值在程序的整个生命周期内都是有效,可被任何函数访问)、静态变量、常量。
栈区:存放函数参数值、局部变量等,由编译器管理。
堆区:由程序员管理,程序运行结束后由操作系统回收。
#includeusing namespace std; int g_a = 10; int g_b = 10; int *func(int d) { int c = 100; d = 1000; //栈区变量数据在函数执行完被自动释放 int* a = new int(10); //指针:局部变量,放栈区;指针保存数据放堆区 return a; } void test01() { int* p = func(1000); cout << *p << endl; cout << *p << endl; delete p; //cout << *p << endl; //因指针内存已被释放,此句会报错 } void test02() { //堆区用new开辟数组 int *arr = new int[10]; for (int i = 0; i < 10; i++) { arr[i] = i + 100; //给arr赋值 } for (int i = 0; i < 10; i++) { cout << arr[i] << " "; } delete[]arr; //释放堆区数组(注意加中括号) } int main() { int a = 10; int b = 10; cout << "局部变量a的地址 " << (int)&a << endl; cout << "局部变量b的地址 " << (int)&b << endl; cout << "全局变量a的地址 " << (int)&g_a << endl; cout << "全局变量b的地址 " << (int)&g_b << endl; test01(); test02(); return 0; }
运行结果
以后学了更多知识还会回来更新的!有误之处恳请大佬们指正,提前感谢!



