动态链接库给传入指针赋值,调试时有可能调试器会欺骗你。

这几天在查找一个动态链接库使用的问题,这个动态链接库的功能时提供序列化和反序列化的功能。
dll接口如下:
int UnSerialize(const char* filename, SerializeClass& object);
其中object就是要反序列化的 对象,filename是要反序列化的数据文件。在我实际使用中 object中是有指针成员的,而且指针成员所指类型还有指针。当在客户端调用反序列化方法后发现object中的指针成员已经有值了 但是指针所指数据并不显示。
当时情况如下:

通常这样的情况会认为指针不正常,指针可能是野指针,并不拥有指针所指内存。此时current 虽然有值,但是并没有解析出这块地址中的数据。老板就是看到这样的指针来找我说我的dll有问题。我一开始也是很疑惑。因为同样的dll链接库在另一个我之前写的工程中是正常运行的。开始我以为工程配置哪里除了问题。然而最终我发现很奇怪的现象。就是在序列化函数试用一下f_tree这对象,f_tree中的指针所指数据就能看看到了。如下:

可以看到current指针所指内存中有data对象,data里面有fileName变量。
总结,是不是很奇怪,有哪位看官知道原因请不吝赐教,我只发现了显现,对本质一无所知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值