gpt4 book ai didi

C++ 是内存泄漏吗?指向在另一个函数中动态分配的数组的指针

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

快速提问。这会泄漏吗?为什么/为什么不?

int main()
{
int array[] = {1,2,3};
doStuff(array);
return 0;
}

什么时候 doStuff 会做这样的事情

void doStuff(int * arr)
{
// ...
arr = new int [50];
// ...
}

编辑@Scott Hunter我认为它不会泄漏,因为 array 指向堆栈上的内存,而且我从未听说过从堆栈泄漏内存,但另一方面,我有点失去与此内存的任何链接。

编辑2我的问题是我在想改变 doStuff 地址中的 arr 也会改变 main 中的 array 但它赢了't。

最佳答案

是的,它会泄漏,因为你不调用 delete [] arr; doStuff() 内的任何地方.

请注意,您甚至没有更改 int array[];在函数外声明。
您所做的只是更改作为按值 参数传递的该指针的拷贝。


顺便推荐一下:

不要在 C++ 中使用原始指针和原始数组。而是使用 std::vector<int>对于您的情况,完全忘记动态内存管理。

关于C++ 是内存泄漏吗?指向在另一个函数中动态分配的数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43985790/

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