为什么多线程会占用我的记忆力

RED*_*AIR 3 c++ windows multithreading

我有一个Windows C++应用程序,其中std::hash_set包含500个条目,每个条目包含32个字节.如果我在一个单独的(很多)线程中创建hash_set,它根据ProcessExplorer使用> 1 GB.当我释放清单时,我看到了这一点.如果我在主线程中创建它,它将使用200 MB.这种现象仅适用于我的应用程序的32位版本.它不适用于x64版本.我使用双四核与Win XP x64.它不是内存泄漏.一切都在clear()上释放.

我的猜测:Windows 32.Bit不是为许多线程/多核构建的.

你有什么好处?

Dan*_*ker 6

数据结构最终从堆中分配,无论线程如何,它都是相同的堆.从不同的线程进行堆调用不会影响分配的内存量.要么你的工具对你撒谎,要么hash_set意外地分配其他几个线程.