話としては別になるので、新たに質問します
下のコードを実行すると
#include <iostream> #pragma warning( disable: 4786 ) #include <string> #include <vector> using namespace std; void hoge2() { printf( "-hoge 2 -\n" ); vector<string> v; char buf[200002]; int i, r, l, s; for( s=0; s<10000; s++ ) { l = rand()%10000; for( i=0; i<l; i++ ) buf = rand()%10; strcat( buf, "\n" ); v.push_back( buf ); } printf( "size:%d\n", v.begin()-v.end() ); } void hoge1() { printf( "-hoge 1 -\n" ); vector<string> v; char buf[102]; int i, r, l, s; for( s=0; s<100; s++ ) { l = rand()%100; for( i=0; i<l; i++ ) buf = rand()%10; strcat( buf, "\n" ); v.push_back( buf ); } printf( "size:%d\n", v.begin()-v.end() ); } int main() { hoge1(); hoge2(); return 0; }
関数hoge1 hoge2 での v が使用しているメモリの量を知りたいのです
v.begin() - v.end() で使用しているメモリアドレスからサイズを計算するのですが、
ランダムな数をpush_backしてるので、ランダムなメモリの量を使用すると思いました
しかし、画像のように結果がでて、先頭のアドレスだけを保持しているのでしょうか
どうやったら vector<string> v; が使用しているメモリの量をはかれるのでしょうか?