c++ - 创建不执行任何操作导致内存泄漏 x64 的线程
问题描述
我正在搞乱一些线程,为我将要做的一些服务器工作做准备。我正在使用一些简单的循环代码检查内存泄漏。我注意到运行一些代码会导致内存泄漏。我假设的代码是防泄漏的,因为它非常简单。所以我又试了一次,但这次没有任何代码,只是一个空函数,我仍然得到相同的结果。
#include <thread>
#include <windows.h>
void doNothing() {}
int main() {
for (int i = 0; i < 10000; i++) {
std::thread thread_obj(doNothing);
thread_obj.join();
}
Sleep(10000000); // <- this sleep here is just so I can monitor the memory in Visual Studio 2019
return 0;
}
这是内存使用图。它变平的点是当它进入睡眠状态时
进入睡眠后的堆大小
这是堆栈视图。在这里,我得到了一些令人费解的结果。
谁能解释我做错了什么?
我正在使用 x64,Visual Studio 2019 16.5.2
如果答案很明显,或者我在做一些愚蠢的事情——我提前道歉,因为这个问题看起来很重要,我 99% 确定我做错了什么。
解决方案
推荐阅读
- android - 如何使现代 Multidex 与旧 API 上的仪器测试一起工作
- python - 如何在 matplotlib 中实现类别轴?
- python - 错误异常:在 rstudio 中使用带有 reticulate 的 python bar_chart_race 时,您的机器上没有安装 ffmpeg
- ansible - Ansible 处理程序未在角色中触发
- r - 年龄比例堆积条形图
- assembly - 为什么 x86 只有一种形式的条件移动,而不是立即数或 8 位?
- c - 调用 open 时如何调用 sys_open 而不是 sys_openat
- python - 多语言 DjangoCMS
- python - 如何从 python 中的主列表创建两个 XORable 列表?
- python - 从项目目录导入包