話としては別になるので、新たに質問します
下のコードを実行すると
#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; が使用しているメモリの量をはかれるのでしょうか?