报告对象使用的堆栈/堆上的内存量? (GDB)

时间:2012-11-28 22:57:25

标签: c++ memory gdb stack heap-memory

如何确定对象使用的内存总量,以及该堆栈当前存在的内存百分比?堆也怎么样?
例如,鉴于此计划:

#include <cstdlib>
#include <vector>
#include <string>

int main(){

    //I wonder how much memory is being 
    //used on the stack/heap right now.

    std::vector<std::string> vec{"11","22","33"};

    //how about now?

    return EXIT_SUCCESS;
}

如何在创建向量之前和之后查看堆栈和堆的大小?
用GDB可以做到这一点吗?
该手册提供了有关examining memory的一些信息,但我无法报告此类信息。

1 个答案:

答案 0 :(得分:1)

如果您准备使用GLIBC特定功能,可以直接在程序中使用mallinfo()来回答问题:

#include <cstdlib>
#include <vector>
#include <string>
#include <iostream>
#include <malloc.h>

int main(){
    std::cout << "Using: " << mallinfo().uordblks << "\n";

    std::vector<std::string> vec{"11","22","33"};

    std::cout << "Using: " << mallinfo().uordblks << "\n";

    return EXIT_SUCCESS;
}