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モード作成時に何か特別なオプションを
つける必要があるのでしょうか?
ご存知の方、御教授お願いいたします。
...release-modeなのになぜ Debug Assertion Failed!... なんでしょ?
リンクするライブラリとかに不整合があるんじゃないかと...
DebugとReleaseでメモリ確保の方式が違いますので、
EXEとDLLでDebugとReleaseを混在させると正しく動作しません。
ご指摘の通りでした。ありがとうございました。