string* g_str = NULL;
void callback(const char* pData, int iLen)
{
加锁;
if(g_str)
g_str->append(pData, iLen);
else
{
g_str = new string;
g_str->append(pData, iLen);
}
if(g_str->size() > 5000)
{
delete g_str;
g_str = NULL;
}
}
因为callback是被dll的多线程调用,那么就出现了g_str被多个线程动态分配内存。那么释放和分配内存,是否涉及到跨模块分配的问题?
1 个解决方案
#1
不涉及,回调函数在哪个模块,用哪个模块的堆的分配和释放,不要一个模块分配在另一个模块释放,仍要调用分配内存的模块释放
#1
不涉及,回调函数在哪个模块,用哪个模块的堆的分配和释放,不要一个模块分配在另一个模块释放,仍要调用分配内存的模块释放