c ++在具有内存分配的函数中构造静态变量

c++ destruct staic variable in function with memory allocation

我对c++没什么疑问

如何在没有内存泄漏的情况下销毁这段代码?

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

就是不要这样写?

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

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

静态存储中的对象在整个程序运行期间都存在。

如果您在整个过程中都没有使用指向的动态对象,则可以在程序终止之前删除该对象。但如果是这样的话,那你为什么要通过静态存储中的指针来拥有这个对象呢?

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

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