【发布时间】:2015-04-24 11:45:52
【问题描述】:
我创建了一个 .dll(具有 MFC 静态链接和静态链接的 Windows 运行时库),并且我正在链接到一个使用 boost 进行内存管理的库(该库是 PCL)。一切编译正常,没有错误,但我注意到在库代码中,内存分配无法正常工作。比如下面这行
indices_.reset (new std::vector<int>);
try {
indices_->resize (input_->points.size ());
}
分配一个新的std::vector,不抛出任何异常,但是在resize函数之后vector还是空的。为什么会这样?
如果我自己在自己的 DLL 代码中分配向量,则分配工作正常。但是会出现其他错误,例如突然消失的字符串(当我将鼠标悬停在这些字符串上时,Visual Studio 调试器会显示“读取内存错误”)。
我使用库的静态链接到 DLL(并且我正在使用静态运行时库,/MT)。
会发生什么?
【问题讨论】:
标签: c++ memory-management boost mfc