当前位置:首页 C++ > 正文

c++ 获得内存使用情况

作者:野牛程序员:2023-07-18 07:55:02 C++阅读 3176

在C++中,可以使用操作系统提供的函数或库来获取内存使用情况。下面是一些获取内存使用情况的方法:

  1. 使用操作系统的函数:

    • Windows平台:可以使用GetProcessMemoryInfo函数来获取当前进程的内存使用情况。这个函数需要包含Windows.h头文件,并通过PROCESS_MEMORY_COUNTERS结构体获取内存信息。

    • Linux平台:可以通过读取/proc/self/status文件来获取当前进程的内存使用情况。可以使用std::ifstream来读取文件内容,并解析出所需的内存信息。

以下是一个示例程序,展示如何在Windows和Linux平台下获取内存使用情况:

#include <iostream>

#ifdef _WIN32
#include <Windows.h>
#elif __linux__
#include <fstream>
#include <sstream>
#endif

// 获取内存使用情况
void GetMemoryUsage()
{
#ifdef _WIN32
    // Windows平台
    PROCESS_MEMORY_COUNTERS pmc;
    if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)))
    {
        SIZE_T virtualMemUsedByProcess = pmc.PrivateUsage;
        SIZE_T physicalMemUsedByProcess = pmc.WorkingSetSize;
        std::cout << "Virtual memory used: " << virtualMemUsedByProcess << " bytes\\n";
        std::cout << "Physical memory used: " << physicalMemUsedByProcess << " bytes\\n";
    }
#elif __linux__
    // Linux平台
    std::ifstream file("/proc/self/status");
    std::string line;
    while (std::getline(file, line))
    {
        std::istringstream iss(line);
        std::string key;
        int value;
        if (iss >> key >> value)
        {
            if (key == "VmSize:")
                std::cout << "Virtual memory used: " << value << " kB\\n";
            else if (key == "VmRSS:")
                std::cout << "Physical memory used: " << value << " kB\\n";
        }
    }
#endif
}

int main()
{
    GetMemoryUsage();
    return 0;
}

请注意,以上示例只适用于获取当前进程的内存使用情况。如果需要获取其他进程的内存使用情况,可能需要使用特定的系统调用或库函数。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击