网站开发难点企业宣传册设计
web/
2025/10/5 14:58:40/
文章来源:
网站开发难点,企业宣传册设计,python网站和js做网站,白云网站建设公司现在有dll模块A,dll模块B以及静态库C,
C中有个全局Create()函数负责创建对象M,当第二次调用Create()的时候会增加引用计数#xff0c;并返回原来创建的对象M。Relase()会减少引用计数。当引用计数为0时#xff0c;销毁对象M。现在在模块A中创建的初始化对象M#xff0c;模块…现在有dll模块A,dll模块B以及静态库C,
C中有个全局Create()函数负责创建对象M,当第二次调用Create()的时候会增加引用计数并返回原来创建的对象M。Relase()会减少引用计数。当引用计数为0时销毁对象M。现在在模块A中创建的初始化对象M模块B继续调用Create()出现在模块B中得到的对象并不是模块A所创建的对象M。想简单的通过将模块A中创建的对象M传给模块B解决问题但在卸载A,B模块的时候会出现释放空指针的问题 具体跟踪
当在模块A中使用静态库Create()创建对象M,在模块A中其他地方也这样使用Create(),引用计数如预料中增加即调用两次引用计数增加至2并返回已经创建好的M。
但接下来在模块B中使用静态库Create()创建对象M,会出现引用计数重新开始计数也就是说新创建了另外个对象。 原因就是因为跨模块此时的全局函数只能相对于模块全局。
进一步讲就是当在模块A中引用计数这个变量对象M的指针以及指针所指向的内存都是在A中的heap中分配的
而在模块B中它们的内存却在B中的heap中分配的当然会出现创建新对象的现象。 解决方法需要将对象M的创建先于模块A和模块B然后在初始化模块A,模块B的时候将创建好的对象M传给它们使用然后在模块A和模块B卸载后释放对象M。注意这里Create()函数的引用计数已经不起作用了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87414.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!