gpt4 book ai didi

c++ - C++ 什么时候从内存中删除变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:28 24 4
gpt4 key购买 nike

我使用 C++ 有一段时间了。我只是不确定内存管理是如何工作的,所以这里是:

我首先不确定函数中的内存是如何取消分配的,例如:

int addTwo(int num)
{
int temp = 2;
num += temp;
return num;
}

所以在这个例子中,temp 会在函数结束后从内存中删除吗?如果不是,这是怎么做到的。在 C# 中,一旦变量的作用域用完,它就会被删除。还有其他我应该知道的情况吗?

谢谢

最佳答案

在 C++ 中有一个非常简单的经验法则:

所有内存在超出范围时都会自动释放,除非手动分配。

手动分配:

  • 由 new() 分配的任何对象必须由匹配的 delete() 取消分配。
  • 任何由 malloc() 分配的内存必须由匹配的 free() 取消分配。

C++ 中一个非常有用的设计模式称为 RAII ( Resource Acquisition Is Initialization ),它将动态分配绑定(bind)到作用域对象,在其析构函数中释放分配。

在 RAII 代码中,您不必再担心调用 delete() 或 free(),因为只要“ anchor 对象”超出范围,它们就会自动调用。

关于c++ - C++ 什么时候从内存中删除变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com