C++ C++;导致大内存泄漏的for循环中的线程
我一直在尝试在代码中使用线程,我发现在添加线程后出现了内存泄漏。通常,代码占用了400MB,但在我添加线程后,它增加到900MB并继续增加 我编写了一个测试代码来查看内存泄漏的来源,我发现它是for循环中的线程。在短暂的等待之后,该测试代码使用了超过100MB的内存,并不断增长。 这段代码也有点像我正在编写的代码C++ C++;导致大内存泄漏的for循环中的线程,c++,multithreading,c++11,memory,memory-leaks,C++,Multithreading,C++11,Memory,Memory Leaks,我一直在尝试在代码中使用线程,我发现在添加线程后出现了内存泄漏。通常,代码占用了400MB,但在我添加线程后,它增加到900MB并继续增加 我编写了一个测试代码来查看内存泄漏的来源,我发现它是for循环中的线程。在短暂的等待之后,该测试代码使用了超过100MB的内存,并不断增长。 这段代码也有点像我正在编写的代码 #include <iostream> #include <thread> void foo(){} int main() { for(;;){
#include <iostream>
#include <thread>
void foo(){}
int main()
{
for(;;){
std::thread Ding(foo);
Ding.join();
}
}
#包括
#包括
void foo(){}
int main()
{
对于(;;){
标准:螺纹顶(foo);
丁.join();
}
}
我正在使用Windows7和Code::Blocks 16.01,使用GNU GCC编译器版本4.9.2,并使用任务管理器查看内存使用情况
为什么这段代码会不断增加其内存使用量,我如何才能阻止它 我无法复制。对我来说,保持在520-530K。这段代码也有点像我正在编写的代码。这可能就是原因。你是在什么编译器和操作系统上观察到这个问题的?在我的电脑上是常量156KB,这可能是你的编译器中的一个错误。检查更新版本。@πάνταῥεῖ 我使用的是Windows 7,GNU GCC编译器4.9非常旧,不是完全的C++11版本。。从技术上讲,这段代码不应该产生任何加载,因为用于线程的函数是空的。。优化版本应该崩溃。如果它在cdb之类的调试器中运行。。我不知道,可能只是为了存储线程和堆栈的数据?我无法复制。对我来说,保持在520-530K。这段代码也有点像我正在编写的代码。这可能就是原因。你是在什么编译器和操作系统上观察到这个问题的?在我的电脑上是常量156KB,这可能是你的编译器中的一个错误。检查更新版本。@πάνταῥεῖ 我使用的是Windows 7,GNU GCC编译器4.9非常旧,不是完全的C++11版本。。从技术上讲,这段代码不应该产生任何加载,因为用于线程的函数是空的。。优化版本应该崩溃。如果它在cdb之类的调试器中运行。。我不知道,它可能只是存储关于线程和堆栈的数据?