【发布时间】:2021-05-20 18:22:36
【问题描述】:
我在 DLL 中有许多输出指针的导出函数,它们在这些函数中分配内存。例如:
DLL_EXPORT void some_function(const char*** param)
{
*param= new const char*[somenumber];
//someting
//in some for-cycle
char* somestr = new char[somenumber1];
strcpy(somestr , somelocalstr);
//someting
}
在其他类似项目中使用过(这里就不写LoadLibrary()、GetProcAddress()了,已经写好了):
void some_function_that_uses_dll()
{
const char** param;
some_function(¶m);
//something
//some for-cycle
const char* somestring = param[i];
//something
non_local_std_string = somestring;
}
这就是我收到项目的方式。
这里似乎发生了明显的内存泄漏。但是当我尝试在non_local_std_string = somestring; 之后写delete[] somestring; 时,我遇到了崩溃。可能是因为它是不同的项目。
有没有办法释放那些在 DLL 中分配的内存,在它被复制到std::string (non_local_std_string) 之后?或者,std::string 会移动那些记忆吗?
【问题讨论】:
-
从你的dll中导出一个调用delete的函数
标签: c++ string c++11 memory dll