介绍c++中new 和delete关键字的内容与用法

在C++中,newdelete 是两个关键字,分别用于动态内存分配和释放。

new 关键字

new 关键字用于在堆(heap)上动态地分配内存。当我们使用 new 分配内存时,会得到一个指向该内存块指针。new 的基本用法如下:

Type* pointer = new Type;

这里,Type 是你想要分配的类型的名称,pointer 是一个指向 Type 类型对象的指针。
例如,如果你想要动态地分配一个整数,可以这样做:

int* intPointer = new int;

除了分配单个对象,new 还可以用来分配数组:

int* intArray = new int[10]; // 分配一个包含10个整数的数组

分配后,你可以像使用普通数组一样使用 intArray。不过,与栈上分配的数组不同,new 分配的数组不会在作用域结束自动销毁。

delete 关键字

new 相对应,delete 关键字用于释放 new 分配的内存。使用 delete 可以防止内存泄漏。delete 的基本用法如下:

delete pointer;

这将释放 pointer 指向的内存。例如:

delete intPointer;

如果你使用 new 分配了一个数组,需要使用 delete[] 来释放整个数组的内存:

delete[] intArray;

new 和 delete 的注意事项

  1. 匹配使用:使用 new 分配的内存必须使用 delete 来释放,使用 new[] 分配的内存必须使用 delete[] 来释放。
  2. 内存泄漏:如果忘记释放 new 分配的内存,将导致内存泄漏。
  3. 构造函数和析构函数:当使用 new 分配一个对象时,会调用该对象的构造函数。当使用 delete 释放对象时,会调用该对象的析构函数。
  4. 异常安全:在使用 new 分配内存时,如果后续的代码可能会抛出异常,应该使用异常安全的方式来管理内存分配,比如使用智能指针或者 try-catch 块。

示例代码

#include <iostream>
int main() {
    int* myInt = new int(7);    // 分配一个整数,并初始化为7
    int* myArray = new int[10]; // 分配一个包含10个整数的数组
    // 使用分配的内存
    std::cout << "Value of myInt: " << *myInt << std::endl;
    // 释放内存
    delete myInt;           // 释放单个整数
    delete[] myArray;       // 释放数组
    return 0;
}

在使用 newdelete 时,应该小心谨慎,确保每个分配都有对应的释放,以避免内存泄漏和其他内存管理问题。在C++11及以后的版本中,推荐使用智能指针(如 std::unique_ptrstd::shared_ptr)来自动管理内存,从而减少内存泄漏的风险。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九层指针

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值