首页 > 解决方案 > 使用 shared_mutex 的内存泄漏

问题描述

以下代码导致内存使用量增加:

#include <shared_mutex>

class foo
{
public:
   void bar()
   {
      std::unique_lock lock(m_mtx);
   }
   std::shared_mutex m_mtx;
};

int main()
{
   while (1)
   {
      foo obj;
      obj.bar();
   }
}

以下不:(仅更改互斥锁类型)

#include <mutex>

class foo
{
public:
   void bar()
   {
      std::unique_lock lock(m_mtx);
   }
   std::mutex m_mtx;
};

int main()
{
   while (1)
   {
      foo obj;
      obj.bar();
   }
}

我正在使用 Windows 7 并使用任务管理器来跟踪我的程序的内存消耗。

我用 mingw 和这个简单的命令行编译:

g++.exe -std=c++17 -o mytest main.cpp

我在使用 shared_mutex 时做错了什么?

标签: c++memory-leaksc++17mutex

解决方案


推荐阅读