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;
}

posted @   yub4by  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示