声明字符串时内存泄漏

Memory leak when declaring string

我正在开发一个要求内存泄漏为 0 的 C++ 控制台应用程序。但是,我对内存泄漏非常陌生,我想知道为什么这已经导致内存泄漏,而几乎没有任何代码:

int main()
{
    std::string httpResult;


    _CrtDumpMemoryLeaks();


    return 0;
}

这是 VS 2019 中给定的内存泄漏:

Detected memory leaks!
Dumping objects ->
{93} normal block at 0x00000146FEB63BD0, 16 bytes long.
 Data: <x               > 78 FB 15 D6 13 00 00 00 00 00 00 00 00 00 00 00 
Object dump complete.

我唯一要做的就是声明 std::string。为什么会出现内存泄漏?

考虑一下:

int main()
{
    std::string httpResult;


    _CrtDumpMemoryLeaks();

    std::abort();

    return 0;
}

此代码存在内存泄漏,因为在调用 abort 时未调用具有自动存储持续时间的对象的析构函数。 _CrtDumpMemoryLeaks(); 无法提前知道调用后资源 是否被清理。这段代码没有内存泄漏

int main()
{
 
    {
        std::string httpResult;
    }

    _CrtDumpMemoryLeaks();


    return 0;
}

(并且 _CrtDumpMemoryLeaks(); 没有发现任何内存泄漏候选对象。)