gpt4 book ai didi

C++ VS : 'new' and 'delete' override in the multi-DLL solution

转载 作者:行者123 更新时间:2023-11-28 04:48:37 26 4
gpt4 key购买 nike

我有一个大型解决方案,每个项目都生成一个 dll。在其中一个中,我设置了“新建”和“删除”覆盖,但看起来它们并没有覆盖其他 dll 中的标准分配器。正常吗?这些覆盖是本地的 dll 吗?

作为解决方案,我可以编写包装函数分配器——“my_new”和“my_delete”,它们可以按我想要的任何方式工作,并使用它们代替“new”/“delete”。但我想知道,在其本地 dll 之外的覆盖会发生什么情况。

谢谢)

最佳答案

当在单个 DLL 中使用时,覆盖是本地的且安全的。毕竟它们是独立的可执行文件。但是您可能会遇到这样一种情况:在 DLL 中创建的具有重载的对象被传递给另一个 DLL 中定义的函数,最终通过标准运算符 delete 将其销毁。 (它也适用于反向。)这将导致未定义的行为,通常是崩溃。

毕竟,为 Windows 编程时的一般规则是通过来自同一 DLL 的代码创建和销毁对象。所以为了安全起见,您应该验证您的所有 DLL 是否遵守此规则。

关于C++ VS : 'new' and 'delete' override in the multi-DLL solution,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com