这个问题与SO中名字相似的问题不是重复的
众所周知,如果DLLs被静态链接(/MT标志在MSVC中),分配内存的DLL必须释放它;否则内存释放会导致运行时错误。
问题如下:
- 我在DLL中分配了一个std::vector,称为A。
- A将向DLL B传递向量。
- DLL B插入数据到向量中。
- 现在,如果DLL A试图销毁向量,则会遇到错误。
我已经发现,如果在将向量传递给B之前使用std::vector::reserve,使向量足够大以容纳数据并防止内存重新分配 - 通常在项目插入期间发生 - 那么在尝试销毁向量时,我就不会在A中获得错误信息。看起来,如果进行内存重新分配,B会为其自己的堆分配向量。我的推理错了吗?我该如何防止这种情况发生?
DLL
,这与你关于独立可执行文件的说法相矛盾。很遗憾,我不知道有没有这样的文件。如果需要的话,我会在互联网上搜索。 - Serge