请求高手,大师点拨
在VC++6.0环境下,我把一个运算程序做成动态链接库,取名为(wsxdll),在debug状态下生成的(wsxdll.dll和wsxdll.lib)调试通过,其外部函数也能被另一个应用程序(usewsx)正常调用完成运算。但同一个(wsxdll),在release状态下生成的(wsxdll.dll和wsxdll.lib)虽也能被应用程序(usewsx)调用,但运算出错。以下是一些细节说明
◆在release状态下编译(wsxdll)虽通过,但有warning
Linking...
Creating library Release/wsxdll.lib and object Release/wsxdll.exp
LINK : warning LNK4089: all references to "GDI32.dll" discarded by /OPT:REF
wsxdll.dll - 0 error(s),
◆(wsxdll)中用了堆结构的数据变量,
我发现,用debug版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值正常,如整型变量的默认值是(-842150451),但用Release版的(wsxdll.dll和wsxdll.lib)时,给堆分配物理内存后,堆变量中的默认值不正常,如整型变量的默认值是(3736336)或(0),甚至是(-1.#QNAN)。
注:给堆分配物理内存和释放分配于之的物理内存已在(wsxdll)中正确使用,否则debug版也通不过。