我无法创建内存泄漏



我目前正在测试C++中的内存泄漏,发现我无法使ram接近99%。我主要只是想测试一下,我记得有一次我在关闭程序之前成功地关闭了电脑。然而,我目前正在做

while (true)
{
int* x = new int[100];
}

积累内存需要一段时间,但我也注意到程序会自行关闭。在VS中,它会给我badalloc异常。所以我去测试了释放。此外,该程序在自行关闭之前积累了大约2 GB(我有32 GB,40%目前被其他进程使用(。我记得我曾经设法让它的使用率接近90%,但在它自行关闭之前,我似乎再也无法做到这一点了。我通过任务管理器和visual studio中的调试窗口进行了检查。

我想知道,是操作系统发现程序分配不正确并关闭了它,还是什么让它自己关闭程序不应该运行吗?我的电脑没有冻结或其他任何东西,就像前面提到的,它慢慢接近2GB,然后就自己关闭了。我正在运行发布配置。

请告诉我这一切背后的过程。是的,我知道这有点愚蠢,但我正在学习,只是好奇它能以多快的速度达到99%的RAM使用率,但它做不到。

TIA。

您描述的症状对于Windows上的32位程序来说似乎是合乎逻辑的:最大内存使用量为2GB。您可以更改exe上的某些属性(或在编译期间(以使用更多的内存。如果您想了解更多信息,可以阅读:https://superuser.com/questions/1163749/why-do-32-bit-processes-have-a-2-gb-ram-limit

最好的做法是更改编译器标志以创建64位可执行文件,请参阅https://learn.microsoft.com/en-us/cpp/build/how-to-configure-visual-cpp-projects-to-target-64-bit-platforms

最新更新