Как определить общий объем памяти, используемой объектом, и какой процент этой памяти в данный момент существует в стеке? А как насчет кучи?
Например, учитывая эту программу:
#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?
Руководство предоставляет некоторую информацию о изучение памяти, но я не смог сообщить такую информацию.
Если вы готовы использовать специальные функции 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;
}
Других решений пока нет …