デバッグの途中で止まってしまう。

[戻る]
mo 2002/10/17(木) 15:19:02
環境
os->WindowsXP
soft->Vc++6.0 MFC

HEAP[xxx.exe]: Invalid Address specified to RtlValidateHeap( 00A20000, 
00A26A8C )

ダイアログを閉じるときに上のエラー?が出て止まります。(続行は出来る)
毎回出るというわけではなくINIファイル関連の操作をした後に閉じると
この事象がおきます。
このエラーはINIファイルをいくつも設定する必要が出てきたため
新たにファイル名を指定できるように変えたら出るようになりました。
INIファイルの名前を変えて保存したい場合このようなやり方は
まずいのでしょうか?

CWinApp* pApp = AfxGetApp(); //INIファイル呼び出し用
pApp->m_pszProfileName = filename; //ここを毎回変えています。(新たに追加した箇
所)
CString kekka;
pApp->GetProfileString(section, kategori, NULL);

dairygoods 2002/10/17(木) 15:39:43
CWinAppのm_pszProfileNameの説明を見てください。

mo 2002/10/17(木) 16:06:15
見ました。
ですがうまくいきませぬ
この場合はこんな感じに書けばいいんですよね?
pApp->m_pszProfileNameの名前を見てても
代入したとき値は変わりません

CString filename = "d:\\somedir\\myini.ini";
CWinApp* pApp = AfxGetApp(); 

free((void*)pApp->m_pszAppName); //開放
pApp->m_pszProfileName = filename; 
CString kekka;
pApp->GetProfileString(section, kategori, NULL);

mo 2002/10/17(木) 16:45:10
とりあえずやりたいことは
INIファイルの名称を指定して読み込んだり書き込んだりすることが出来れば
解決なので、そちらの方法をご存知の方がいましたらお願いします。

mo 2002/10/17(木) 17:07:36
[[解決]]
つづり間違いでした

free((void*)pApp->m_pszAppName); //開放(間違い)
pApp->m_pszProfileName = filename; 

free((void*)pApp->m_pszProfileName); //開放(正解)
pApp->m_pszProfileName = filename;

sugar 2002/10/17(木) 17:11:24
WindowsAPIを使った方が早そうですね。

::GetPrivateProfileString()
::SetPrivateProfileString()
など

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