我有两个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访问向量元素呢?
答案 0 :(得分:0)
堆栈中什么都没有。
map<int,vector<clock_t>>
不包含任何指针或引用。 int
个密钥将被复制到内部map
内存中。 vector
内的map
和clock_t
内的vector
相同。