1

所以我问自己如果我尝试在 Windows XP 上进行堆溢出会发生什么,我很惊讶地看到,一旦程序“吃掉”了所有的 RAM(顺便说一句,这会立即发生),任务管理器中的进程下降到 5MB,之后不再移动。然而,计算机内存使用量仍在增长。

那么为什么 Windows 看不到我的软件占用了 GB 的内存呢?我觉得这可能是一个安全问题,因为一旦软件吃掉了所有内存,它就可以“隐藏”在小进程组中(也许我有点偏执)。

注意:当堆满时没有任何反应,cpu 只是跳到 100%,因为一旦 malloc 失败,我的 for(;;) 循环就会疯狂地运行。

编辑:好的!从来不知道您可以调整任务管理器列。我今天学到了一些东西:D。

4

2 回答 2

0

有趣的实验.. 默认情况下,任务管理器显示默认工作集。还有其他内存字段,例如分页和未分页池和工作集。页面错误还可以告诉您程序正在尝试分配内存但失败了。

于 2009-09-23T13:32:38.707 回答
0

尝试打开任务管理器并转到查看>选择列...然后打开更多内存列。很可能该程序正在使用更多内存,但不是您在任务管理器中查看的类型

我认为在 XP 下可能会有一个您会感兴趣的虚拟内存专栏

于 2009-09-23T13:28:33.863 回答