gpt4 book ai didi

c++ - 内存管理

转载 作者:太空狗 更新时间:2023-10-29 23:34:30 24 4
gpt4 key购买 nike

这是一个关于c++代码的内存管理问题。

using namespace std;
#include <iostream>
#include <string.h>

int main()
{
string a="first";
string *b= new string;
*b=a;
a="second";
cout << *b << ", " << a;
delete b;
return 0;
}

我们可以释放存储 b 指向的字符串的内存块。我假设这意味着一旦完成, b 就不再具有任何意义。我们可以释放 b 以释放一些内存。为什么我们不能解除分配 a?我知道我们只能删除/释放指针,但字符串 a 必须在某处占用一些内存。有什么方法可以释放字符串 a 占用的内存吗?如果有足够多的字符串按照a初始化的方式初始化,那岂不是内存用完了?

最佳答案

字符串a 在堆栈上声明。您不能手动释放它,但一旦它离开作用域(例如,当封闭函数返回时),它就会自动释放。如果您需要能够在函数中释放该内存,则改为动态声明它(就像您对 b 所做的那样)。

关于c++ - 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3373443/

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