gpt4 book ai didi

c++ - 函数内部动态分配的内存泄漏

转载 作者:行者123 更新时间:2023-11-30 01:17:47 25 4
gpt4 key购买 nike

我正在在线类(class)中学习 C++,目前正在讨论指针和内存泄漏。

在类(class)中有人告诉我们,当一个函数体结束时,所有局部变量都将被销毁(按照它们声明的相反顺序)。

我想了解的是这段代码是否会泄漏内存:

void function()
{
TestClass *p = new TestClass();
}

看起来确实如此,但我不确定为什么指针“p”没有被取消引用到它的堆地址,并且一旦函数范围退出,那里的数据就会被删除。

最佳答案

肯定会泄漏内存。 当函数体结束时,所有局部变量都被销毁 表示在堆栈中创建的变量,而不是堆中。如果您在堆中分配内存,则必须在完成后释放它。

另一件事是您关于取消引用 的概念是错误的。 Dereference是指使用指针指向的对象,而不是释放指针的内存,这叫做Deallocation

关于c++ - 函数内部动态分配的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670419/

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