[c ++销毁具有内存分配功能的空间变量

问题描述 投票:0回答:2

我对c ++几乎没有疑问

如何销毁此代码而不会导致内存泄漏?

void classA::funcA()
{
    static char* cArr = new char[10];
}

只是不写这种样式?

c++ memory-management memory-leaks static destructor
2个回答
0
投票

您可以改用RAII类型或避免分配:

static char cArr[10];
static auto cArr2 = std::make_unique<char[]>(10);

0
投票

静态存储中的对象在程序的整个过程中都存在。

如果您在整个期间内不使用该动态对象,则可以在程序终止之前将其删除。但是如果是这种情况,那么为什么要通过静态存储中的指针来拥有对象呢?

在静态指针的生存期结束时,内存在技术上是泄漏的事实,因为程序即将结束,因此这不是问题。

您应该重新考虑的是,是否首先需要静态存储。如果确实将设计更改为使用自动存储,则必须非常小心,不要泄漏内存。

© www.soinside.com 2019 - 2024. All rights reserved.