Releaseモード時のクラスのCStringメンバ変数への代入について

[戻る]
riku 2003/02/04(火) 17:45:47
CStringをメンバ変数に持つクラスをDLLにて作成しました。
これを呼び出す際、CStringのメンバ変数へCStringの変数を
代入してからクラスを実行するのですが、DLLをDebugモードで
作成した時は何ともないのですが、Releaseモードで作成した時、
その代入でエラーとなり落ちてしまいます。
「Debug Assertion Failed!・・・Expression: _CrtIsValidHeapPointer(pUserData)」
とエラーダイアログが出力されます。

CCLASS0:親クラス
CCLASS1:子クラス

class AFX_EXT_CLASS CClASS1 : public CCLASS0
{
public:
    ULONG    lAbc;
    CString  strAbc;
・
・
・
}

というクラスがあった時、クラスを呼び出すexeで

CCLASS1  Class1;
ULONG    lCba = 1234;
CString  strCba = "abc";

Class1.lAbc = lCba; //これは問題ない
Class1.strCba = strCba; //この時落ちてしまう

となってしまいます。Releaseモード作成時に何か特別なオプションを
つける必要があるのでしょうか?
ご存知の方、御教授お願いいたします。

επιστημη 2003/02/04(火) 17:53:57
...release-modeなのになぜ "Debug Assertion Failed!..." なんでしょ?
リンクするライブラリとかに不整合があるんじゃないかと...

dairygoods 2003/02/04(火) 17:55:45
DebugとReleaseでメモリ確保の方式が違いますので、
EXEとDLLでDebugとReleaseを混在させると正しく動作しません。

riku 2003/02/04(火) 18:20:14
[[解決]]
ご指摘の通りでした。ありがとうございました。

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