声明字符串时内存泄漏
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();
没有发现任何内存泄漏候选对象。)
我正在开发一个要求内存泄漏为 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();
没有发现任何内存泄漏候选对象。)