gpt4 book ai didi

c++ - 堆栈结构中的动态数组(在堆上)会发生什么情况?

转载 作者:太空宇宙 更新时间:2023-11-04 15:44:43 25 4
gpt4 key购买 nike

我关心的是数组是否应该被释放。这是一个例子:

typedef struct
{
int *values;
int length;
} a_struct;

void foo()
{
a_struct myStruct;
myStruct.values = new int[NUM];

delete[] myStruct.values; // Is this needed?
return;
}

我的理解是 myStruct(在堆栈上)将在“return”语句后自动删除。它也会删除“值”吗?

最佳答案

它确实释放指针 ,但不是它指向的东西 - 毕竟,什么是a_struct 知道您分配给该指针的内容吗?也许它是指向堆栈上分配的内容的指针,或者指向与另一个 struct 共享的数组。

所以,是的,您需要手动释放它(尽管在现代 C++ 中通常使用“智能指针”来管理内存)。

关于c++ - 堆栈结构中的动态数组(在堆上)会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18413516/

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