_PROCESS_MEMORY_COUNTERS给出了有关内存使用情况的负值

时间:2013-09-30 12:44:18

标签: c++

我正在尝试通过我的应用程序获取内存。我跟着this

这是我写的代码,但是在1 GB之后它给出了负值。

    _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);

2 个答案:

答案 0 :(得分:3)

int membyte = ((size_t)info.WorkingSetSize);

不要那样做。无法保证工作集大小将在int可以表示的范围内。也许你想使用unsigned long,或者更好的是SIZE_T

答案 1 :(得分:0)

更改

int membyte = ((size_t)info.WorkingSetSize);

SIZE_T membyte = info.WorkingSetSize;

文档说明了SIZE_T的WorkingSetSize成员的类型。 你将它转换为有符号的int类型,而SIZE_T是无符号的。