所以我最近一直在摆弄std :: thread,我遇到了以下情况: - 首先,我的目标是让一个线程对一个对象执行操作。为了说明,以下是一个简单的代码,它构造一个线程来通过对象的成员函数设置成员变量。问题是当执行此代码时,内存将越来越多地消耗在while循环中生成的线程。我不明白这种行为;线程一旦超出范围就不应被破坏,因此程序消耗的内存保持不变,因为 while 循环?
#include <thread>
using namespace std;
class foo
{
public:
int x;
void set()
{
x = 1;
}
};
int main()
{
while(true)
{
foo f;
thread t(&foo::set, &f);
t.join();
}
return 0;
}
编辑:我在Windows 7下使用MinGW64执行此程序。上述代码消耗的内存速率约为每秒1兆字节。