Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;导致大内存泄漏的for循环中的线程_C++_Multithreading_C++11_Memory_Memory Leaks - Fatal编程技术网

C++ C++;导致大内存泄漏的for循环中的线程

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(;;){

我一直在尝试在代码中使用线程,我发现在添加线程后出现了内存泄漏。通常,代码占用了400MB,但在我添加线程后,它增加到900MB并继续增加

我编写了一个测试代码来查看内存泄漏的来源,我发现它是for循环中的线程。在短暂的等待之后,该测试代码使用了超过100MB的内存,并不断增长。 这段代码也有点像我正在编写的代码

#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之类的调试器中运行。。我不知道,它可能只是存储关于线程和堆栈的数据?