代码四区:
程序运行前(生成exe后):
(1)代码区:存放cpu执行的机器指令,共享且只读
(2)全局区:存放全局变量、静态变量(static)
常量(字符串常量,全局常量(const))
局部常量(×)
(3)栈区:存放函数的参数值,局部变量(不可返回它的地址,执行完函数后编译器会释放)
(4)堆区:利用new来在堆区开辟空间,使用delete关键字来释放
#include <iostream>
#include <cstdint> // 包含 uintptr_t 的头文件
using namespace std;
int a = 10;
const int c = 20;
int* getAddress(){
int m = 10;
return &m;
}
int main() {
//全局区
static int b = 10;
// 使用 reinterpret_cast 将地址转换为 uintptr_t 类型然后打印
cout << reinterpret_cast<uintptr_t>(&a) << " "
<< reinterpret_cast<uintptr_t>(&b) << " "
<< reinterpret_cast<uintptr_t>(&c) << " "
<< reinterpret_cast<uintptr_t>(&("yzq")) << endl;
//栈区--不可返回函数局部变量的地址
int *p = getAddress();
//cout<<*p;
//堆区
int* m = new int(10);
int* g = new int[10];
cout<<reinterpret_cast<uintptr_t>(&m)<<" "<<reinterpret_cast<uintptr_t>(&g)<<endl;
return 0;
}