vector<int> vec(10); //vec本身在棧空間,內部指針指向壹個堆空間,大小是40個字節
cout<<&vec[0]<<endl; //這個顯示的就是上面剛分配堆空間的首地址,這個是由重載後的operator[]辦到的
vec.reserve (20); //重新分配空間
cout<<&vec[0]<<endl; //顯示的是重新分配後的堆空間的首地址,80字節
而0x0017f798是vec本身的地址,這是個棧地址,也可以輸出
cout<<&vec<<endl; //這個輸出的就是自動窗口看見的&vec 地址數值
就像下面這段代碼
int * p=new int[10]; //壹個棧空間的指針指向壹個堆空間
cout<<&p[0]<<endl; //輸出這個堆空間的首地址
delete[] p; //釋放
p=new int[20]; //重新分配
cout<<&p[0]<<endl; //輸出重新分配的空間的首地址
cout<<&p<<endl; // 輸出p本身的地址,自動窗口的&p就是這個而不是&p[0]