发现一个诡异的问题:dll导出类成员变量地址变化
最近在做一个DLL导出类,这个类的数据成员有int,bool,和double*三种类型,做好了DLL/lib/h之后,在win32-console程序中调用,一切正常,这个类使用Initialize函数初始化成员,在Initialize退出前,使用VC查看局部变量,其数据成员及属性值如下图一:
返回到主程序的main函数内,也就是initialize函数调用完成之后,这个类的实例的内部成员如下图2所示:
可以看到,最下面三个double*型变量的地址和内容都没变化。
然后在一个有界面的MFC程序内部使用这个类,当定义一个这个类型的变量并且调用initialize初始化的时候,在initialize退出前,其数据成员如下图三:
此时,这个类的数据成员正确的完成了初始化;
然后从initialize返回到主程序后,这个实例的某些成员发生了变化:
看上去,在MFC程序中,从类的方法调用返回到主程序时,数据成员发生了不希望的错误的变化。
请教,这是怎么回事?应该如何避免这种情况?/?
[解决办法]
没有什么特别的注意事项,使用上和应用程序一样。