首页 >后端开发 >C++ >我什么时候应该在 C 中使用'new”关键字?

我什么时候应该在 C 中使用'new”关键字?

Susan Sarandon
Susan Sarandon原创
2024-12-20 07:08:14996浏览

When Should I Use the `new` Keyword in C  ?

理解 C 中对“new”关键字的需求

C 引入了“new”关键字进行内存管理,提供对对象的控制创建和分配。为了理解它的用法,让我们探索两种方法:

方法 1:使用 'new'

使用 'new' 为空闲存储(堆)上的对象分配内存),它提供了以下内容:

  • 需要显式删除来释放分配的内存并防止内存占用泄漏。
  • 对象在显式删除之前保持分配状态,从而使数据持久性甚至超出其范围。
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";

方法 2:不使用“new”

声明一个没有“new”的对象会将其分配在堆栈上,堆栈是局部变量的临时存储。这种方法具有以下特点:

  • 内存分配是隐式的并且自动发生。
  • 删除是不必要的,因为当对象超出范围时会回收内存。
MyClass myClass;
myClass.MyField = "Hello world!";

选择正确的方法

选择取决于所需的内存管理和对象持久性要求。

  • 使用“new”如果:

    • 你想要动态分配一个对象并控制它的生命周期。
    • 你需要从函数返回一个指向对象的指针(返回在堆栈上分配的对象是不安全的)。
  • 如果满足以下条件,请避免使用“new”:

    • 您更喜欢自动内存管理,而不会有内存风险泄漏。
    • 您不需要超出其范围的对象持久性

内存管理经验法则:

为了防止内存泄漏,请采用将每个“新”配对的做法带有“删除”语句。这可以确保正确的内存清理并避免潜在的问题。

Foobar *foobar = new Foobar();
// ...
delete foobar; // Cleanup the allocated memory

以上是我什么时候应该在 C 中使用'new”关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn