打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
01、C++内存管理

一、C++编译器将内存分为四个区:

1、代码区

存放 CPU 执行的机器指令

特点:(1)共享性(不管程序运行几次,都只用一份代码。并且另外的执行程序可以调用它)。

(2)只读性(代码区是只读的程序运行时,该取什么内容都不能修改)

另外,代码区还规划了局部变量的相关信息。

总结:你所写的所有代码都会放入到代码区中,代码区的特点是共享和只读。

2、全局区

全局区中主要存放的数据有:全局变量、静态变量、常量(如字符串常量)。

全局区的叫法有很多:全局区、静态区、数据区、全局静态区、静态全局区。

这部分可以细分为data区和bss区

总结:全局区存放的是全局变量、静态变量和常量

3、栈区

栈是一种先进后出的内存结构,由编译器自动分配释放。

存放函数的参数值、返回值、局部变量等。(该区由编译器来管理)

4、堆区

堆是一个大容器,它的容量要远远大于栈,但没有栈那样先进后出的顺序。用于动态内存分配。(该区由程序员来管理)

存放由 malloc 和 new 生成的数据,用完数据后可以用 free 和delete 释放。

二、new和delete关键字

new的用法举例:

1、动态分配变量和释放变量:

int * p = new int(10) ; //在堆区动态开辟一个整形指针变量,并且初始化出为10.

delete p;

2、动态分配一维数组和释放数组:

int * p1 = new int[10] ; //在堆区动态开辟一个由10个int型的变量的数组,并且初始化为0.

delete[] p1;

3、动态开辟二维数组并释放:

int **p1 = new int *[10];

    for(int i = 0;i < 10;i++)

    {

        p1[i] = new int [10];

    }

    for(int i = 0;i < 10;i++)

    {

        delete[] p1[i];

    }

    delete[] p1;

详细内容见本栏下的具体条目。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c++基础6:堆和栈 内存泄漏 栈溢出
内存管理
C 内存分区模型
程序分区模型(代码实例解析)
C++中堆和栈以及相关
栈与堆
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服