创建超过1G内存大小的程序

正常情况一个进程最大占用内存为1G一下,如果程序有需求要使用超过1G大小的程序,可进行如下操作

VS修改设置:属性--->链接器--->系统--->启用大地址 【选择是】

测试申请堆内存代码

#include 
#include 
#include 
#include 
#include 
#include 

int count = 0;
HANDLE g_event;
void TestThread()
{
	while (1)
	{
		try
		{
			new int[1024 * 1024];
			count++;
		}
		catch (const std::bad_alloc)
		{
			printf("申请内存失败\n");
			break;
		}
	}
	SetEvent(g_event);
}
int main()
{
	g_event = CreateEvent(0, false, false, 0);
	CreateThread(0, 0, (LPTHREAD_START_ROUTINE)TestThread, 0, 0, 0);
	
	WaitForSingleObject(g_event, INFINITE);
	printf("%dM\n",count*4);

	system("pause");
	return 0;
}

因为编译出来的是x86版本,所以运行后可看到使用了4G的内存

如果是x64,那么最大可使用8GB

创建超过1G内存大小的程序_第1张图片

使用vs开发人员工具 dumpbin /headers xxx.exe可以查看程序是否开启了大地址选项

创建超过1G内存大小的程序_第2张图片

Qt开启大地址选项

在.pro文件中添加  QMAKE_LFLAGS_WINDOWS += /LARGEADDRESSAWARE

注意

QMingw是不可以使用该选项的会出现如下错误(Qt Widget Application工程会出现,Qt Console Application不会出现,并且Qt控制台程序没有开启成功,如果使用VS创建Qt控制台工程是可以开启选项成功)

 error: /LARGEADDRESSAWARE: No such file or directory

创建超过1G内存大小的程序_第3张图片

你可能感兴趣的:(学一点,c++,测试工具,c++)