在Win10操作系统中,使用Visual Studio的VC++验证,一次最多可以申请内存的上限是多少。
使用的是个人笔记本电脑,配置如下图所示。内存8G,操作系统是“Windows 10家庭中文版”。
为了验证,在VS2022中创建空项目,添加文件“main.cpp”,并输入如下代码:
#include
上述代码是简单的,首先显示了2的n次方就是1左移n位;然后不断的申请和释放内存,内存大小从1G字节逐渐变化到10000G字节(大于硬件物理内存)。
运算符new的声明如下:
void* __CRTDECL operator new[]( size_t _Size);
size_t的定义为无符号64位整数:
typedef unsigned __int64 size_t;
函数_time64返回自 1970 年 1 月 1 日午夜以来经过的秒数,详见网页 time, _time32, _time64 | Microsoft Docs
Release版的运行效果如下:
在申请26G字节的内存时,异常退出。
Debug版的运行效果如下:
手机拍摄的照片
Debug版的试了几次,在申请6G、7G或8G大小的内存时,会导致系统崩溃(键盘、鼠标均无响应,只能硬件断电)。
由以上程序的运行结果可以看出,在Win10系统中,VC++编写的Debug版的软件一次可以申请的内存大小应该与可用物理内存大小相当(过大时,会导致系统崩溃);Release版的软件一次可以申请的内存大小应该与可用物理内存和C盘可用空间之和的大小相当(过大时,不会导致系统崩溃,只是会导致程序异常退出)。