C++获取内存使用情况小结

 更新时间:2024年01月11日 09:53:21   作者:Joemt  
在程序编程过程中,为了防止出现内存泄漏情况出现,需要持续关注内存程序内存占用情况,本文主要介绍了C++获取内存使用情况小结,具有一定的参考价值,感兴趣的可以了解一下

在程序编程过程中,为了防止出现内存泄漏情况出现,需要持续关注内存程序内存占用情况。如下方式实现获取当前进程内存使用情况:

linux:

void my_top(string path, bool flag)
{
    if(flag)
    {
        FILE* read_top = fopen("/proc/self/status", "r");
        char line_rss[128];
        unsigned long long Pid, VmSize, VmRSS;

        while (fgets(line_rss, 128, read_top) != NULL)
        {
            if (strncmp(line_rss, "Pid:", 4) == 0)
            {
                string str(line_rss + 4);
                Pid = strtoull(str.c_str(), NULL, 19);
            }

            if (strncmp(line_rss, "VmSize:", 7) == 0)
            {
                string str(line_rss + 7);
                VmSize = strtoull(str.c_str(), NULL, 19);
            }

            if (strncmp(line_rss, "VmRSS:", 6) == 0)
            {
                string str(line_rss + 6);
                VmRSS = strtoull(str.c_str(), NULL, 19);
            }

            if(Pid < 0 || VmSize < 0 || VmRSS < 0)
            {
                fclose(read_top);
                break;
            }
        }
        fclose(read_top);

        ofstream writer_top(path, ios::app);
        writer_top << Pid << " " << VmSize << " " << VmRSS << endl;
        writer_top.close();
    }
    else
    {
        ofstream writer_top(path, ios::app);
        writer_top << "0" << " " << "0" << " " << "0" << endl;
        writer_top.close();
    }
}

其他资源:

VmPeak:     表示进程所占用最大虚拟内存大小
VmSize:     表示进程当前虚拟内存大小
VmLck:      表示被锁定的内存大小
VmHWM:        表示进程所占用物理内存的峰值
VmRSS:         表示进程当前占用物理内存的大小(与procrank中的RSS)
VmData:     表示进程数据段的大小
VmStk:      表示进程堆栈段的大小
VmExe:      表示进程代码的大小
VmLib:      表示进程所使用共享库的大小
VmPTE:      表示进程页表项的大小

windows:

#include <windows.h>
#include <psapi.h>
#include <stdio.h>

int main()
{
    PROCESS_MEMORY_COUNTERS pmc;
    if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)))
    {
        printf("当前进程占用内存大小为:%d KB\n", pmc.WorkingSetSize / 1024);
    }
    return 0;
}

到此这篇关于C++获取内存使用情况小结的文章就介绍到这了,更多相关C++获取内存内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • C++冒泡排序与选择排序详解

    C++冒泡排序与选择排序详解

    大家好,本篇文章主要讲的是C++冒泡排序与选择排序详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • VC中CDC、HDC、pDC区别与联系及相互转换

    VC中CDC、HDC、pDC区别与联系及相互转换

    这篇文章主要介绍了VC中CDC、HDC、pDC区别与联系及相互转换的方法,非常的详细,有需要的小伙伴可以参考下,希望对大家学习VC能够有所帮助。
    2015-11-11
  • C语言数组a和&a的区别讲解

    C语言数组a和&a的区别讲解

    今天小编就为大家分享一篇关于C语言数组a和&a的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • MATLAB实现五子棋游戏(双人对战、可悔棋)

    MATLAB实现五子棋游戏(双人对战、可悔棋)

    这篇文章主要为大家详细介绍了MATLAB实现五子棋游戏,可以进行双人对战、也可悔棋,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • 如何在程序中判断VS的版本(实现方法详解)

    如何在程序中判断VS的版本(实现方法详解)

    下面小编就为大家带来一篇如何在程序中判断VS的版本(实现方法详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • C++ 超详细梳理继承的概念与使用

    C++ 超详细梳理继承的概念与使用

    这篇文章主要介绍了C++ 多继承详情,C++支持多继承,即允许一个类同时继承多个类。只有C++等少数语言支持多继承,下面我们就来看看具体的多继承介绍吧,需要的朋友可以参考一下
    2022-03-03
  • C语言操作XML文件的技术和方法

    C语言操作XML文件的技术和方法

    XML因其灵活性和标准化特性,被广泛应用于数据交换、配置文件、Web服务等领域,C语言作为一种高效、底层的编程语言,在处理XML数据方面也有广泛的应用,本文将深入探讨C语言操作XML的技术和方法,需要的朋友可以参考下
    2025-03-03
  • C语言编写猜数游戏

    C语言编写猜数游戏

    这篇文章主要为大家详细介绍了C语言编写猜数游戏,可以自定义猜数范围和机会次数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++中std的使用及说明

    C++中std的使用及说明

    这篇文章主要介绍了C++中std的使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++基于Boost.Asio实现端口映射器的过程详解

    C++基于Boost.Asio实现端口映射器的过程详解

    Boost.Asio 是一个功能强大的 C++ 库,用于异步编程和网络编程,它提供了跨平台的异步 I/O 操作,在这篇文章中,我们将深入分析一个使用 Boost.Asio 实现的简单端口映射服务器,文中有详细的代码讲解,需要的朋友可以参考下
    2023-11-11

最新评论