c++之内存分配(静态内存、栈、堆)

内存分为三种:静态内存、栈内存、堆内存。

静态内存

保存的对象:

  1. 局部static对象
void func()
{
	static int a;    //局部static对象
}
  1. 类static数据成员
class Function(){
public:
	static void func();    //类中static函数
private:
	static int i_func;    //类中static变量
};
  1. 全局变量

生命周期:

从被定义开始,一直存在于程序的整个生命周期中。

栈内存

保存的对象:

  1. 定义在函数内的非static对象
void func()
{
	int i_func;    //定义在函数内的非static对象
}

生命周期:

仅在其定义的程序块运行时才存在。

堆(动态内存)

保存的对象:

  1. 动态分配的对象(程序运行时分配的对象)

生命周期:

由我们手动分配和摧毁

使用动态内存的原因:

  1. 程序不知道自己需要使用多少对象
  2. 程序不知道所需对象的准确类型
  3. 程序需要在多个对象间共享数据

动态内存分配方式:

  1. 运算符:new
  2. 语法:Type *pointer = new Type;
  3. 返回:分配失败则返回空指针

动态内存摧毁方式:

  1. 运算符:delete
  2. 语法:delete pointer;

初始化动态分配对象:

int *pi = new int(10);    		    //动态分配一个int对象,初始值为10
string *ps = new string(2, '9');    //动态分配一个string对象,初始值为"99"
int *pa = new int[10]();              //动态分配一个int数组,大小为10,初始值为0
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值