tnie / TestDll

学习 dll 导出函数、导出变量
7 stars 1 forks source link

swap() 函数意味着重新分配内存吗? #4

Closed tnie closed 6 years ago

tnie commented 6 years ago
void MyStockData::sortApply(const std::string& group, const std::deque<std::string>& codes, 
    const std::deque<ObjInfo>& objs)
{
  if (m_data.find(group) == m_data.end() ||
    m_keys.find(group) == m_keys.end())
  {
    return;
  }
  m_data[group].swap(objs);  // ERR
  m_keys[group].swap(codes);  // ERR
}
tnie commented 6 years ago

const 限定符

const string cat("tom");
string dog("wang");
dog.swap(cat);  // ERR

编译无法通过的:

error C2664: “void std::string::swap(std::string &)”: 无法将参数 1 从“const std::string”转换为“std::string &” : note: 转换丢失限定符

swap() 交换 dll/exe 存储,会引发「跨模块管理内存」问题