C++ 动态内存分配new、delete、内存耗尽情况

参考:
C++——动态内存分配new–delete
c++ primer plus

一、静态内存分配与动态内存分配

静态内存分配:全局或局部变量(对象),编译器在编译时都可以根据变量或对象的类型知道所需内存空间的大小。从而系统在适当的时候为他们分配内存空间

动态内存分配:有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配称为动态内存分配。动态分配都在自由存储区中进行。

动态内存分配 :

在c++中可以使用malloc()动态分配内存,但更好的方法是使用new来分配内存
指针真正的用武之地:在运行阶段分配未命名的内存以存值,在此情况下只能通过指针来访问内存

//在运行阶段为一个int值分配未命名内存
//使用指针来访问这个值
int* ps = new int;
//左边的变量指向了新的内存空间
//使用delete释放内存
delete ps;

delete使用注意:
与new配对使用
不释放已经释放的内存
不能释放普通变量分配的内存
对空指针使用delete是安全的
在这里插入图片描述

数组动态分配:

使用new创建数组

int* array = new int[10];
//new运算符返回第一个数组元素的地址

使用delete释放数组空间

delete[] array;

内存耗尽?

在这里插入图片描述

二、小结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值