C++关注内存及硬盘占用情况

今天测试多线程异步处理数据,发现程序很容易崩溃掉。主要原因事在异步的时候加载数据,加载的总数据量远远大于本身内存导致的。所以搜索找到一些关注内存占用的代码,以后在处理多线程的时候可能用到条件锁,防止爆内存情况

代码如下:

#include<windows.h>

BOOL CheckResource()
{
	MEMORYSTATUSEX statex;
	statex.dwLength = sizeof(statex);
	GlobalMemoryStatusEx(&statex);
	double AvailMemory = (double)statex.ullAvailPhys / 1024 / 1024 / 1024;//得到可用内存容量,单位G
	double AllMemory = (double)statex.ullTotalPhys / 1024 / 1024 / 1024;//得到的是总内存,单位G
	//if (statex.ullTotalPhys / 1024 / 1024 / 1024 < 8) 
	if (AvailMemory < 8)
	{
		::MessageBox(NULL, "可用内存小于 8G", "提示", MB_ICONWARNING);
		return 0;
	}
	if (statex.ullAvailPhys / 1024 / 1024 / 1024 < 1) {
		::MessageBox(NULL, "物理有效内存小于 1G", "提示", MB_ICONWARNING);
		return 0;
	}

	ULARGE_INTEGER lpFreeBytesAvailable;
	ULARGE_INTEGER lpTotalNumberOfBytes;
	ULARGE_INTEGER lpTotalNumberOfFreeBytes;

	GetDiskFreeSpaceEx(NULL, &lpFreeBytesAvailable, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
	if (lpTotalNumberOfFreeBytes.QuadPart / 1024 / 1024 / 1024 < 50) {
		::MessageBox(NULL, "磁盘有效空间小于 50G", "提示", MB_ICONWARNING);
		return 0;
	}
	return TRUE;
}

int main()
{

	return CheckResource();
}

通过调试发现,可用内存:5.436G,总内存:15.8713G。与任务管理器显示一致,测试成功
在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值