返回迭代器是 DLL 安全的吗?
我指的是,如果该类来自具有自己的堆的 DLL,并且它有一个私有向量,那么拥有将迭代器返回到该向量的公共函数是否安全?
谢谢
I'm referring to if the class comes from a DLL with its own heap, and it has a private vector, is it safe to have public functions which return iterators to that vector?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的。需要注意的是:使用 DLL 时,请使用 C++ 运行时 DLL,而不是静态链接。
在两种情况下使用静态链接:开发独立的 EXE(其中运行时 DLL 将是第一个且唯一的 DLL)时以及开发不带 C++ 接口(即 C 接口或 COM 接口)的可重用 DLL 时。这两种情况都不适用于此。您必须有一个 C++ 接口才能返回迭代器。
通过 C++ 运行时的动态链接,只有一个运行时。
Yes. One caveat: when using DLLs, use the C++ runtime DLL, not static linking.
You use static linking in 2 cases: when developing a standalone EXE (where the runtime DLL would be the first and only DLL) and when developing a reusable DLL without a C++ interface (i.e. either a C interface or a COM interface). Neither of these cases apply here. You must have a C++ interface to return iterators.
With dynamic linking of the C++ runtime, there's only one runtime.
它不是。事实上,它有自己的堆,这会阻止它正常工作。
It is not. The fact that it has its own heap is what will prevent it from working correctly.