任何在Windows上使用DLL的人都会告诉你,在DLL边界的一侧使用new
创建一个对象,然后在另一侧使用delete
删除它是个坏主意。通常,为了避免这种情况发生,我们会在DLL中使用工厂方法来创建对象,以便执行新/删除的对象代码位于同一对象文件中。
今天,我正在设计一个新的接口,我想从一个对象中std::move
一个std::vector<std::wstring>
到另一个对象,其中这些对象是在不同的DLL中创建的。当我准备好执行此操作时,我突然想到,由于另一个对象现在拥有底层指针,这可能意味着delete
现在可能会在不同的对象代码中发生,与new
所在的代码不同。
有人能否确认这是否是真的?
std::vector
)的任何内容,如果你在某个地方看到了,请发一个链接好吗? - Benj