问题描述
guys,
如果我覆盖全局新和删除我的dll代码,这将覆盖用户代码新和删除?
我做了一个测试,它显示用户新和删除不会受到影响。
如果我想让用户代码为新的,删除被替换为mine sdk new / delete,那么怎么做。
guys,If I override the global new and delete in my dll code, will this override the user code new and delete?I made a test, and it shows the user new and delete will not be impacted.If I want to make user code new and delete be replaced by mine sdk new/delete, how to do that.
模板类的情况是什么。模板类定义包括一些新的/删除。用户代码可以实例化它。那么,它可能使用用户新的/删除,对吗?
What's the case of template class. Template class definition includes some new/delete. And user code might instantiate it. Then, it might use user new/delete, right?
推荐答案
不,在Windows上每个DLL都有自己的 operator new()
/ operator delete()
。但是你应该小心 - 如果一些DLL new
s对象应该 delete
d使用相同的 operator delete()
- 否则会遇到未定义的行为。
No, on Windows each DLL has its own operator new()
/operator delete()
. However you should be careful - if some DLL new
s an object that object should be delete
d using the same operator delete()
- otherwise you run into undefined behavior.
这篇关于DLL的新增/删除是否覆盖用户代码new / delete?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!