変数が使用できるメモリの制限

[戻る]
chiaki.t [E-Mail] 2003/09/30(火) 16:12:50
はじめまして、chiaki.tと申します。
プログラム中の変数が使用できるメモリの制限について質問させて下さい。
MFCのDocumentクラスに使用している変数で、大量(400ヶ位)(?)のCStringを
追加して使用したところ、その追加した内容の一部が以前からあるCStringの
変数に上書きされてしまいました。
このようなことはメモリの制限から起きるものなのでしょうか?
CString特有の制限から起きるものなのでしょうか?
何かアドバイス頂けるものがあれば、よろしくお願いします。
環境 Win2000 VC6.0 SP5 MFC

ku 2003/09/30(火) 16:48:40
まず上書きしているコード(&その付近)を示してはどうでしょうか?
現在の情報だけですと、chiaki.tさんのコードが悪いのか
CStringが悪いのか判断できません
コードを書いたら、そのコード付近の動作や状態についても書いてください

dairygoods 2003/09/30(火) 17:35:01
おそらくメモリ不足ではなく、
不正な領域に書き込んでいるのが原因だと思います。

例えば、次のような原因が考えられます。
・CStringをLPCTSTRに変換して、その領域に強引に書き込んでいる
・CString::GetBufferで得られたポインタに、指定した長さよりも長い文字列を書き込ん
でいる
・不正なCStringポインタを使っている

chiaki.t [E-Mail] 2003/10/01(水) 16:25:00
[[解決]]
kuさん、dairygoodsさん ご指摘ありがとうございました。
ご指摘通りのタイプミスによる配列範囲外への代入でした。

CString Opvar[3][2][16];
Opvar[2][1][10]=_T("xxx"); -> Opvar[2][11][10]=_T("xxx");

頭を冷やして見直して見つかりました。
これに懲りずまたよろしくお願いします。

古いスレッドには追加発言できません。