to: masterz ******非常不好意思,深意还打扰您,有一问题需请教.(关于CString)******
我现在在维护一个比较大的工程,其中有多个DLL,由于需要,稍微加了一些功能(10行代码),
导致程序出现了一个莫名其名的问题,即Debug正常,而Release不行,退出.
这几天我一直在调试这个bug,终于找出是由于CString引起的. 后来我没办法,把整个CString
实现代码全部过一遍,查看其究竟到底是怎样实现的.
功夫不负有心人,现在取得了比较大的进展,其原因就是:
我其中有一个DLL接口函数类似这样的定义的: __declspec (dllexport) int PASCAL EXPORT test(int a, CString& strRet /*出参*/);
当调用这个函数后, 它需要赋值返回strRet = "abc";这样,在其内部,重新进行内存分配(报错),
其原因就是DLL内部的_afxPchNil的值与实际strRet的&_afxInitData值不一致,导致释放本没有分配的内存.
我想问,为什么外部的_afxPchNil与DLL里面的_afxPchNil的值不一样.而且特奇怪,只要我在程序任何地方,
加上这样一句CString("A");程序又可以正常运行.但好像系统又极不稳定.
请赐教....