gpt4 book ai didi

C++ 简单的新建和删除线程和内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:34 26 4
gpt4 key购买 nike

我在我的代码中使用了线程并发现了一些内存泄漏,所以我测试了以下简单的代码。

#include <thread>

void foo(){}

int main()
{
for(; ;)
{
std::thread *th = new std::thread(foo)
th->join();
delete th;
}
}

我在未更改任何设置的情况下使用 VC++ Release 模式对其进行了测试,我也发现了内存泄漏。当我使用 Windows 任务管理器检查进程时,这个程序的内存在增加。

我认为我代码中的 delete 不起作用。有什么原因会导致内存泄漏吗?


更多细节

查看评论和答案后,我又运行了几分钟程序。几分钟后我发现测试程序没有使用更多内存。但是我不确定为什么 threaddelete 之后使用更多内存(其他类没有),几分钟后我的程序仍然随着内存使用量的增加而关闭。在我的程序中,每个循环只使用 11 个线程,所以内存使用量增长缓慢,然后突然关闭。

最佳答案

我认为操作系统无法如此快速地管理线程的内存。1)以一定的间隔检查相同的代码2) 您查看 Windows 任务管理器中的哪个统计列?检查“分配的内存”。

关于C++ 简单的新建和删除线程和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983189/

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