返回

C++中的new和delete关键字:从放弃到重启

后端

一份爱恨交织的代码往事 | 从弃用 new 和 delete ,到它们的重归之路

在C++中,new和delete关键字用于动态内存分配和释放。它们是C++中最基本、最重要的关键字之一,也是C++中内存管理的核心。然而,随着时间的推移,new和delete关键字也一直备受争议,有人认为它们是C++中最大的设计缺陷之一,应该被废除。

new和delete关键字的由来

new和delete关键字最早出现在C语言中,它们的作用是用于动态内存分配和释放。在C语言中,new和delete关键字只是简单的库函数,它们并没有内置在语言本身中。而在C++中,new和delete关键字被正式纳入了语言本身,成为了一种内置的操作符。

new和delete关键字的作用

new关键字的作用是动态分配一块内存,并返回指向这块内存的指针。delete关键字的作用是释放一块内存,并使指向这块内存的指针失效。

new和delete关键字的优缺点

new和delete关键字具有很多优点,也有一些缺点。

优点:

  • 动态内存分配可以让我们在程序运行时根据需要分配和释放内存,这使得C++具有很大的灵活性。
  • new和delete关键字的使用非常简单,只需一行代码就可以完成内存的分配和释放。
  • new和delete关键字是C++中最基本、最重要的关键字之一,掌握了它们的使用方法,就可以写出更加强大的C++程序。

缺点:

  • new和delete关键字容易造成内存泄漏和悬空指针等问题。
  • new和delete关键字可能会导致程序运行时出现错误,例如内存分配失败等。

C++中是如何管理内存的

C++中的内存管理是一个非常复杂的话题,这里我只简单地介绍一下。

C++中的内存分为两部分:栈内存和堆内存。栈内存是编译器自动分配和释放的,而堆内存则是由程序员自己分配和释放的。new和delete关键字就是用于在堆内存中分配和释放内存的。

如何避免内存泄漏和悬空指针等问题

要避免内存泄漏和悬空指针等问题,就需要小心地使用new和delete关键字。以下是一些需要注意的点:

  • 始终在不再使用的时候释放内存。
  • 不要使用未初始化的指针。
  • 不要对已经释放的内存进行访问。

new和delete关键字的未来

new和delete关键字是C++中最基本、最重要的关键字之一,它们在C++中有着非常重要的作用。尽管new和delete关键字也有一些缺点,但它们仍然是C++中最常用的关键字之一。

随着C++的发展,new和delete关键字也可能会发生一些变化。例如,C++20中引入的新标准库std::pmr就可以帮助我们避免内存泄漏和悬空指针等问题。

结语

new和delete关键字是C++中最基本、最重要的关键字之一,它们在C++中有着非常重要的作用。尽管new和delete关键字也有一些缺点,但它们仍然是C++中最常用的关键字之一。

随着C++的发展,new和delete关键字也可能会发生一些变化。让我们拭目以待吧!