8.2重学C++之【内存分布模型-程序运行后】
#include<iostream>
using namespace std;
/*
1.2程序运行后
栈区
存放函数的参数、局部变量
注意:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
堆区
程序员利用new在堆区开辟内存空间
*/
int * func(int b){ // 形参存放在栈上
int a = 10; // 局部变量存放在栈上
return &a; // 该函数执行完后,栈上数据被自动释放
}
int * func_1(){
int * p1 = new int(10); // 主动在堆区开辟变量10,返回值为其地址
// 指针p1实质也是局部变量,其存放在栈区,它的值为一个地址,该地址为堆区新开辟的变量的地址,该地址存放10
return p1;
}
int main(){
// 栈区
int * p = func(100);
//cout << *p << endl;
//cout << *p << endl;
// 堆区
int * p2 = func_1();
cout << p2 << endl;
cout << *p2 << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!