如何确定对象使用的内存总量,以及该堆栈当前存在的内存百分比?堆也怎么样?
例如,鉴于此计划:
#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的一些信息,但我无法报告此类信息。
答案 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;
}