假设EXE和DLL使用相同的编译器和STL版本。如果我在EXE中使用 std :: vector 并使用 reserve 来保留内存。然后我将它作为DLL的引用传递给它。
我在DLL中执行 push_back 以向我的vector添加元素。如果我没有超过实际容量,那么在DLL或EXE中分配的新元素的内存是多少?
答案 0 :(得分:3)
当您致电push_back
时,可以复制您要添加到矢量中的任何对象。无法保证该对象的大小(以及其他内容)与.exe中通过std::vector::reserve
保留的大小相同。这两个二进制文件可能已使用不同版本的STL进行编译。
答案 1 :(得分:0)
<强>都不是。强>
它分配在进程的虚拟内存空间中,其代码是.exe
和.dll
的组合。