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 に答える