我正试图通过我的应用程序来获得内存使用量。我跟着this
这是我编写的代码,但是在1GB之后,它会给出负值。
_PROCESS_MEMORY_COUNTERS info;
GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) );
int membyte = ((size_t)info.WorkingSetSize);
QString s1 = "MB";
double mem = membyte/1048576.0;
if(mem>900.0)
{
mem = mem/1024.0;
s1 = "GB";
}
double f,i,t1,t2;
f = modf (mem , &i);
f = f*100;
t1 = modf(f,&t2);
mem = i + (t2/100.0);发布于 2013-09-30 12:47:37
int membyte = ((size_t)info.WorkingSetSize);别干那事。不能保证工作集大小将在int可以表示的范围内。也许您想要使用unsigned long,或者更好的是使用SIZE_T。
发布于 2013-09-30 13:04:54
变化
int membyte = ((size_t)info.WorkingSetSize);至
SIZE_T membyte = info.WorkingSetSize;文档中说WorkingSetSize成员的类型(如果是SIZE_T )。您将其转换为已签名的int类型,而SIZE_T则是无符号的。
https://stackoverflow.com/questions/19094626
复制相似问题