C ++跨越边界使用std :: vector

时间:2015-06-08 15:20:15

标签: c++ c++11 dll vector stl

假设EXE和DLL使用相同的编译器和STL版本。如果我在EXE中使用 std :: vector 并使用 reserve 来保留内存。然后我将它作为DLL的引用传递给它。

我在DLL中执行 push_back 以向我的vector添加元素。如果我没有超过实际容量,那么在DLL或EXE中分配的新元素的内存是多少?

2 个答案:

答案 0 :(得分:3)

This is generally a bad idea.

当您致电push_back时,可以复制您要添加到矢量中的任何对象。无法保证该对象的大小(以及其他内容)与.exe中通过std::vector::reserve保留的大小相同。这两个二进制文件可能已使用不同版本的STL进行编译。

答案 1 :(得分:0)

<强>都不是。

它分配在进程的虚拟内存空间中,其代码是.exe.dll的组合。