【问题标题】:Windows 7 kills program for too much memoryWindows 7 因内存过多而杀死程序
【发布时间】:2025-12-31 07:05:06
【问题描述】:

我正在尝试在 8Gb Windows 7 64 位机器上写入 RAM。

int main(int argc, char *argv[])
{
    for (__int64* i; ; i = new __int64(0))
        continue;

    return 0;
}

在它占用大约 2-3gigs 之后它会抛出一个异常:Microsoft C++ exception: std::bad_alloc at memory location 0x0039f634. 我可以说任务管理器中仍然有足够的 RAM。我曾尝试使用 Visual Studio 2010 和 Qt Creator。

mlock.c 中抛出的异常中断:

void __cdecl _unlock (
        int locknum
        )
{
        /*
         * leave the critical section.
         */
        LeaveCriticalSection( _locktable[locknum].lock );
}

有什么想法吗?我希望它用 0 写入所有非活动 RAM。

【问题讨论】:

  • 第一:内存!= RAM。第二:你是在构建 32 位还是 64 位二进制文​​件?
  • +1 表示 32 位编译目标 - 2GB 看起来很可疑。
  • 是的,我认为它已经是 64 位了,因为它是用 __int64 编译的。不过现在可以使用了。

标签: windows memory ram


【解决方案1】:

在构建选项中编译为 x64 而不是 win32

【讨论】: