在不同的dll之间交换地图

时间:2015-04-03 07:28:31

标签: c++ dictionary dll heap-memory stack-memory

我有两个dll,比如A和B.其中一个dll B将从dll A交换一个地图。

地图结构是

map<int,vector<clock_t>>* mObj = new map<int,vector<clock_t>>;

这里mObj在堆内存中。但是映射和值(向量元素)的关键在于堆栈内存。一旦它从一个块出来,堆栈将超出范围。当我交换不同Dll中的地图时,矢量元素是否仍然存在(因为它已经脱离了DLL)..?

实际上,我可以从B.dll中的A.dll交换地图中获取矢量元素。怎么可能..?只有A.dll的程序堆栈内存有那个向量元素(只有映射对象在堆中),那我怎么能从B.dll访问向量元素呢?

1 个答案:

答案 0 :(得分:0)

堆栈中什么都没有。

map<int,vector<clock_t>>不包含任何指针或引用。 int个密钥将被复制到内部map内存中。 vector内的mapclock_t内的vector相同。