gpt4 book ai didi

c++ - 在 dll 之间使用 STL 时遇到问题

转载 作者:可可西里 更新时间:2023-11-01 10:07:57 25 4
gpt4 key购买 nike

我在一个 dll 中有一个 vector (或字符串),通过它的引用或指针在另一个 dll 中修改它是否安全,例如将新成员推送到 vector 或更改字符串的值?不知何故,当我这样做时有时会发生崩溃,我不知道为什么。

如果我只是在另一个 dll 中读取它,使用 const 指针或引用,它绝对安全吗?

使用 STLport 怎么样?更安全吗?

最佳答案

如果你修改一个STL容器,删除或添加新元素到它,它通常涉及分配/取消分配内存。如果碰巧您使用驻留在一个 DLL 中的分配器分配了一些内存,然后在另一个 DLL 中释放内存 - 使用另一个分配器,驻留在另一个 DLL 中 - 那么您可能会遇到麻烦。我想这可能就是您正在经历的。

一种可能的解决方案是将您的STL 容器封装在您的类中,并通过该类的函数访问STL 容器的函数。这个想法是,您在一个 DLL 中实现了该类,并且每当您操作该对象(以及 STL 容器)时,您只使用一个 C++ 分配器。

如果您在一个 DLL 中操作在另一个 DLL 中创建的 const 对象(如您所说:“只读”访问),那么它不涉及 C++ 分配器,因此它应该是安全的。

关于c++ - 在 dll 之间使用 STL 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10933509/

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