“初始化”: 从“ULONGLONG”转换到“unsigned int”,可能丢失数据

本文介绍了一种解决在分配DIB内存空间时出现的数据类型转换警告的方法,通过显式地将ULONGLONG类型转换为DWORD和UINT类型,避免了可能的数据丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//申请DIB所需要的内存空间,将除BITMAPFILEHEADER结构外的位图数据读入内存//存放在m_pDib所指向的缓冲区中

m_pDib=new BYTE[file.GetLength() -sizeof(BITMAPFILEHEADER)];

file.Read(m_pDib, file.GetLength() -sizeof(BITMAPFILEHEADER));

error:

1>d:\prefences\code\test\源代码\chap1_4\chap1_4doc.cpp(106): warning C4244: “初始化”: 从“ULONGLONG”转换到“unsigned int”,可能丢失数据

1>d:\prefences\code\test\源代码\chap1_4\chap1_4doc.cpp(107): warning C4244: “参数”: 从“ULONGLONG”转换到“UINT”,可能丢失数据

 

修改:

 

 

//申请DIB所需要的内存空间,将除BITMAPFILEHEADER结构外的位图数据读入内存
 //存放在m_pDib所指向的缓冲区中
 m_pDib=new BYTE[(DWORD)(file.GetLength()-sizeof(BITMAPFILEHEADER))];
  file.Read(m_pDib,(UINT)(file.GetLength()-sizeof(BITMAPFILEHEADER)));

#include <iostream> #include <fstream> #include <string> #include <vector> #include <cstdlib> #include <windows.h> #include <ctime> // 获取 CPU 核心数量的函数 int getCPUCount() { // 定义 SYSTEM_INFO 结构体变量,用于存储系统信息 SYSTEM_INFO sysInfo; // 调用 GetSystemInfo 函数填充 sysInfo 结构体 GetSystemInfo(&sysInfo); // 返回 CPU 核心数量 return sysInfo.dwNumberOfProcessors; } // 检查内存是否小于 8GB bool isMemoryLessThan8GB() { MEMORYSTATUSEX memInfo; memInfo.dwLength = sizeof(MEMORYSTATUSEX); // 获取系统内存状态 GlobalMemoryStatusEx(&memInfo); // 总物理内存(单位:字节) ULONGLONG totalPhysicalMemory = memInfo.ullTotalPhys; // 8GB 对应的字节数 ULONGLONG eightGB = 8 * 1024 * 1024 * 1024; return totalPhysicalMemory < eightGB; } int main() { // 初始化随机数种子 std::srand(static_cast<unsigned int>(std::time(nullptr))); // 调用 getCPUCount 函数获取 CPU 核心数量 int cpuCount = getCPUCount(); // 输出 CPU 核心数量 //std::cout << "CPU 核心数量: " << cpuCount << std::endl; if (cpuCount < 10) { // 生成 120 到 260 秒之间的随机延迟时间(单位:秒) int randomDelay = 120 + std::rand() % (260 - 120 + 1); std::cout << "CPU 核心数量小于 10,程序将在 " << randomDelay << " 秒后退出。" << std::endl; // 将延迟时间转换为毫秒 DWORD delayInMilliseconds = static_cast<DWORD>(randomDelay * 1000); // 调用 Sleep 函数使程序暂停指定的时间 Sleep(delayInMilliseconds); return 1; } if (isMemoryLessThan8GB()) { //std::cout << "系统内存小于 8GB,程序退出。" << std::endl; return 1; } return 0; }以上函数改为动态调用,字符串用之前说的串联拼接起来
最新发布
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值