Win10系统VS2022的VC++一次最多可以申请多大内存

在Win10操作系统中,使用Visual Studio的VC++验证,一次最多可以申请内存的上限是多少。

 

使用的是个人笔记本电脑,配置如下图所示。内存8G,操作系统是“Windows 10家庭中文版”。

为了验证,在VS2022中创建空项目,添加文件“main.cpp”,并输入如下代码:

#include <iostream>
#include <time.h>

int main()
{
	//	显示2的i次方的值.	
	for (int i = 0; i <= 60; i+=2) {
		uint64_t N = (uint64_t)1 << i;
		std::cout << "2的" << i << "次方: " << N << std::endl;
	}

	__time64_t time1 = 0, time2 = 0;
	
	//	2的30次方是1G.
	uint64_t G = (uint64_t)1 << 30;
	for (int i = 1; i <= 10000; i++) {
		unsigned __int64 n = G*i;
		std::cout << "正在申请" << i << "G内存(" << n << "字节)...";
		_time64(&time1);	//	自 1970 年 1 月 1 日午夜以来经过的秒数。
		char* pChar = new char[n];
		_time64(&time2);
		std::cout << "成功! 耗时 " << (time2-time1) << "秒." << std::endl;
		delete pChar;
	}
	return 0;
}

上述代码是简单的,首先显示了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盘可用空间之和的大小相当(过大时,不会导致系统崩溃,只是会导致程序异常退出)。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alexabc3000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值