C++ 使用new申请内存

本文介绍了C++中使用new关键字进行动态内存分配的方法,并对比了静态内存分配的区别。通过实例展示了如何申请和释放内存,解释了堆和栈的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. new 是C++语言中用来动态申请内存的关键字,返回的是申请到的内存单元的地址。使用方式为:
指针变量名 = new 要存储数据的类型
e.g.
int*add = new int ;
*add = 121;

# 或者直接赋值
int*add = new int(121);

举个简单的例子:

int * addr = new int;
*addr = 121;
print(%d, *addr);

>> 121
  1. 现在知道了 new动态申请内存的关键字,但是它与静态申请内存的方法有什么不同呢?
  • 当我们定义一个变量时,该变量的值是存储在栈中的,而使用动态申请内存的方式去存储变量,该变量是存放在堆中的。堆中的内存可以根据自己的需要而改变,而栈中的内存是固定不可变的,
  • 将值放入该内存的方式不同,比如
int *addr_dynamic = new int;
int *addr_static;
int a = 15;

*addr_dynamic = 121;
*addr_static = 122; // !!!该行会报错!!!

# 正确方式
addr_static = &a;
*addr_static = 121;

也就是说,int *addr_static; 只是声明了一个指针,即声明了一块可以存放内存地址大小的内存,但是该内存里并没有东西,所以只能先给他分配内存,即代码中的addr_static = &a; 的操作,然后才能赋值。
3. 动态分配内存的方式虽然很方便,但是系统不会自动销毁内存,只能手动释放,释放内存使用delete 关键字。

int* addr = new int(3);
delete addr;

待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值