
2次元配列でウォッチが出来ない
環境
windowsXP Prp
Visual Stadio2003
下記の状況で2次元配列のウォッチが出来ません。
1.Visual Stadio2003を起動
2.ファイル→新規作成→プロジェクト
3.プロジェクトの種類はVisual C++プロジェクトでテンプレートからWindowsフォームアプリケーションを選択して、
プロジェクト名に「test」と入力後OKボタン押下
4.Formの適当な位置にボタンを貼り付ける
5.貼り付けたボタンをダブルクリックしてボタンクリックイベントの中(Form1.h)に以下の処理を記述する
char cWork[5][20];
memcpy(&cWork[0],"こんにちは",sizeof(cWork));
7.memcpy(&cWork[0],"こんにちは",sizeof(cWork));
にブレイクポイントを置いて、デバッグ実行をする
8.フォームのボタンを押下してブレイクポイントで止まったら「cWork」をウォッチする
9.memcpy(&cWork[0],"こんにちは",sizeof(cWork));
をステップ実行後ウォッチで内容を確認すると以下のようになります
━cWork{Length=5}char[][][]
┣━
┣━
┣━
┣━
┗━
ウォッチは出来ませんが、cWorkの中身をテキストボックスに表示や1次元配列に格納したところ
cWorkに正しく値は入っていました。
ウォッチ出来ないのはVisualStadio2003のバグなのでしょうか?
お分かりになられる方いらっしゃいましたらご教授お願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>cWork[0][0]
ええと、其の様なメモリ空間を普通見るならcWorkだけで5つの20バイト空間らしきものが+付きで表示されると思うのですが、それこそ、その前にメモリ破壊とかのコードがあ有れば、VC++自体がメモリの把握は出来なくなります。
全体のコードが不明なので、推測ですが。
この回答への補足
ご回答ありがとうございます。
プロジェクト作成時に、
Windowsフォームアプリケーションを選択している為、
現象が発生しているのかと思っています。
ボタンのイベントにchar cWork[5][20];
のみ書いてcWorkをウォッチするとt_nojiriさんのおっしゃる通り、
5つの20バイト空間らしきものが+付きで表示されるはずなのですが、
下記のような状態になっています。
-cWork{Length=5}char[][][]
┣━
┣━
┣━
┣━
┗━
No.3
- 回答日時:
t_nojiri さんw撃沈ありがとです
この方が書いた、
>&cWork[0]で配列のアドレスのアドレス指してしまってます。
の意味がわかれば解決する気がしますね
ウォッチなどは実体化していない変数などには効果がないことがあります。
C言語などは書いたとおりに実行していないことがあり、
例として10行目で止めても実際には100行あたりで実行していることもあります。
運が悪いときは、実行すらしないこともあります。
Cコンパイラーが自動的に判断して、実行した結果を最初から格納していることがあります。
この回答への補足
再度回答ありがとうございます。
いろいろやってみましたがやはりウォッチ出来ません。
ウォッチでcWork[0][0]を見ようとすると
エラー : インデックス '0' は、ポインタ/配列 'work' の範囲外にあります
となります。
No.1
- 回答日時:
この現象そのものは、調べていませんが、
すでにものすごいバグを書いていますよ。
memcpy(&cWork[0],"こんにちは",sizeof(cWork));
これですけど・・・、sizeof(cWork)の帰り値が絶対に文字より長くないですか?
結果存在していないメモリを参照して、メモリ破壊しますね。
memcpyはテキスト用ではないので"\0"では停止せず、どんどん破壊を
繰り返しますよ・・・
それと、FORMってのがわかりませんが、WINDOWSの文字コードって
そのままANSIじゃなくなかったでした?WCHARだった気がします。
これだとさらにメモリ壊すので、ちょい調べてもらえますか?
この回答への補足
回答ありがとうございます。
memcpy(&cWork[0],"こんにちは",sizeof(cWork));
ではなく
strcpy( work[0], "こんにちは");
でしたね。
ウォッチとが見れないのと関係あるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- アニメ 両津がこんなことをしたら? 3 2022/09/02 16:00
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- ヤフオク! これは出品者が値段を吊り上げてると思いますか? 2 2022/04/17 12:08
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でbyte配列から画像を表示さ...
-
VBA 変数名に変数を使用したい。
-
VBAでMODE関数をつくる
-
Dir関数で読み取り順を操作でき...
-
VB.NETの配列の限界を教えてく...
-
VBA Dowhile 判断条件に動的配...
-
プログラミング関係で質問です。
-
セル範囲から一次元配列の生成
-
7億ある配列を含んだ計算をした...
-
複数の配列変数を1つの配列変数...
-
コンボボックスのインデックス...
-
Excelのメモリ(配列)の上限は2G...
-
【緊急】インクルードファイル...
-
COBOLの基本的な事なので...
-
VBで配列に格納されているデー...
-
VBA: Select Caseを短くしたい
-
ASPのReDim Preserveについて
-
EXCELを使って、アクセスログを...
-
配列のペースト出力結果の書式...
-
C言語によるプログラミング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列のペースト出力結果の書式...
-
定数配列の書き方
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
複数のtextboxの処理を一括で行...
-
VB.NETの配列にExcelから読み込...
-
COBOLの基本的な事なので...
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
レコードセットの中身を配列に...
-
ReDim PreserveよりもReDimが遅い
-
EXCELを使って、アクセスログを...
-
配列の中の最大値とそのインデ...
-
VB6のメモリ解放に関して
おすすめ情報