質問: sizeof(x) / sizeof(x[0]); cout << a << endl; cout << b << endl; _getch(); return 0; } ```
回答: 質問1の答: `sizeof (x)` はポインタの大きさを得ます (32bit ならたいてい 4) `sizeof(x[0])` は `int` の大きさを得ます (32bit ならたいてい 4) なので `4/4==1` を得るだけのことです。 64bit Windows 用コンパイラなら別の値を得るでしょう。 質問2の答: どの処理系でも通用する方法はただ一つ、自分で覚えておくことです。 ``` struct myvector { int* p; // new int [size] の結果 int size; // 事前に new したい数を記憶しておく }; ``` これを自分で行うのはあまりにも馬鹿らしいので `std::vector` を使うとよいでしょう。 `vector` は端的には `new T[capacity]` のラッパ (Wrapper) です。必要な時に自動で `delete[]` してくれて便利便利。 - `vector.capacity` は `new T[capacity]` したってこと - `vector.size` はそのうち、ユーザーが「使っている」と宣言した個数 要素を100個用意しても `vector.reserve(100)` 、30個しか使っていない `vector.size()==30`ってのはよくある話。このとき残り70個はリロケーションなしに `vector.push_back` できる。