exe里的callback函数作为回调函数传给dll,dll里多线程调用这个回调函数,这段代码是否有问题?请看代码。

时间:2021-11-28 19:55:42
a.exe的代码:

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


不涉及,回调函数在哪个模块,用哪个模块的堆的分配和释放,不要一个模块分配在另一个模块释放,仍要调用分配内存的模块释放