环境:windows系统,利用matlab指令mecuda指令编译.cu文件
希望在程序中添加检测当前cpu内存使用情况的代码,利用GlobalMemoryStatusEx这个函数获取,该函数需要#include<windows.h>,但是只要加上这个头文件,编译的时候就会报错:
Compilation aborted.
***********.cu//这个是我的文件名
nvcc error : 'cudafe++' died with status 0xC0000409
添加的检测内存使用情况代码为:
#include <Windows.h>
void getphymemory()
{
MEMORYSTATUSEX memInfo;
memInfo.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&memInfo);
double totalMemory = (double)memInfo.ullTotalPhys / (1024.0 * 1024.0 * 1024.0);
double freeMemory = (double)memInfo.ullAvailPhys / (1024.0 * 1024.0 * 1024.0);
std::cout << "Free Memory: " << freeMemory << " GB" << std::endl;
std::cout << "Total Memory: " << totalMemory << " GB" << std::endl;
}
getphymemory();
查询了一些帖子说是系统问题,大概有这些,但是感觉不是根本问题:
错误代码0xC0000409通常表示堆栈缓冲区溢出。这可能是由于多种原因引起的,例如内存损坏、堆栈溢出、恶意软件感染等。在这种情况下,建议您执行以下操作:
1、确保您的系统已安装最新的Windows更新。
2、运行杀毒软件扫描计算机,以确保您的系统没有受到恶意软件的感染。
3、检查您的计算机是否有足够的内存来编译和运行程序。
4、尝试使用Visual Studio重新编译程序,以便更好地诊断问题。
如果以上步骤都没有解决问题,请尝试在编译程序之前关闭Windows Defender实时保护。这可以通过打开Windows安全中心,然后选择“病毒和威胁防护”来完成。在“病毒和威胁防护设置”下,关闭“实时保护”选项
希望有人可以提供一些解决方向