C++内存篇(二):静态内存、栈内存、动态内存,new与delete

本文介绍了C++中的内存管理,包括静态内存、栈内存和动态内存的概念。静态内存包括局部static、类static数据成员和全局变量,其生命周期从声明到程序结束。栈内存用于存放函数内的非static对象,离开作用域时销毁。动态内存通过new和delete操作,允许在运行时动态分配和释放内存,强调了及时释放内存以防止内存泄漏的重要性。new用于分配内存并构造对象,delete用于释放内存。同时提到了动态分配数组、内存耗尽、const对象释放及指针空悬问题等注意事项。
摘要由CSDN通过智能技术生成

一、静态内存/栈内存与动态内存

一个对象是一块特定类型的能存储数据的内存空间。在程序执行中一个对象占用一块内存而被创建,而后在某个时间被销毁,这个过程称为它的生命周期。这里把命名了的对象称为变量。

有一些变量在程序运行之前编译器就会为他们分配内存,因为他们占用的内存是可预期的(如某个编译器下int固定占32位),这些变量称为静态变量,我们在静态内存中为他们分配空间。这类对象包括:

  • 局部static对象
  • 类static数据成员
  • 全局变量

这类对象的共同特征是一旦被声明就会直到程序结束时才被销毁。

栈内存用来存放函数内的非static对象,在运行其存在的程序块时才会为它们分配空间,而在离开其作用域时会被销毁。

以上两类都可以在运行前确定一个变量需要的空间大小,而有一些变量只有在运行时才能确定需要多少内存空间,比如说:

//输入数字n并且创建大小为n的数组。
int n;
cin >> n;
int *p = new int[n]; 

这时候我们就需要动态内存:以动态的大小地分配空间给变量,这是静态内存和栈内存不能做到的。在C++中我们可以使用newdelete来给对象分配内存和向计算机归还内存。
动态内存允许程序员动态地申请所需空间,但也要求他们一旦不需要这些内存资源的时候就归还他们。把内存归还给计算机是非常重要的,否则就会造成无意义的内存占用导致内存泄漏。尽管归还

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值