0

我将如何确定一个对象正在使用的内存总量,以及堆栈中当前存在的内存百分比?堆呢?
例如,给定这个程序:

#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 做到这一点吗?
该手册提供了一些关于检查内存的信息,但我无法报告这些信息。

4

1 回答 1

2

如果您准备使用 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;
}
于 2012-11-28T23:28:33.653 回答