配列のデバッグ時の内容表示について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dom

配列のデバッグ時の内容表示について

#1

投稿記事 by dom » 13年前

VC++を使っています.
デバッグ時において,

コード:

int a[100];
だと配列の中身全てを見ることができます.

コード:

int b = new int[100];
だとbの中身(配列の一番目)しか見ることができません.

コード:

std::vector<int> c(100);
だと,中身を全て見ることができます.

ここで,同じ動的配列であるのに,new版だと中身が見られなくて,vector版だと
中身を見ることができるのはなぜなんでしょうか.
vectorを調べていないのでわからないのですが何か特別な実装がされてるのでしょうか.

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: 配列のデバッグ時の内容表示について

#2

投稿記事 by beatle » 13年前

std::vectorは内部に配列の長さや実際に格納されている要素の数などを保持していますから、それらの値をVisual C++が自動で認識しているのだと思います。
本当のからくりは知りませんけど。

Blue

Re: 配列のデバッグ時の内容表示について

#3

投稿記事 by Blue » 13年前

VCの場合、デバッグ時の変数の表示(ローカルウィンドウとかウォッチ)のときに
どのように解釈するのかを示したファイルがあって、それに従って表示しています。

VC2005である場合
C:\Program Files\Microsoft Visual Studio 8\Common7\Packages\Debugger\autoexp.dat
がそれに当たります。

vectorの定義も記述があります。

以前、ATLのCArrayとかを手動で追加した記憶があります。

天空橋光
記事: 13
登録日時: 13年前

Re: 配列のデバッグ時の内容表示について

#4

投稿記事 by 天空橋光 » 13年前

ご参考までに、配列のポインタについてはクイックウォッチとかで以下のようにやると一応見れますよ。

b, 100

ちなみに、2番目のコードは、以下の間違いですよね?

コード:

int* b = new int[100]; 

dom

Re: 配列のデバッグ時の内容表示について

#5

投稿記事 by dom » 13年前

天空橋光さんのおっしゃる通り

コード:

int* b = new int[100]; 
でした.

なるほど,VCにそのような設定があったのですね.勉強になりました.

閉鎖

“C言語何でも質問掲示板” へ戻る