多次调用崩溃应用程序崩溃

时间:2013-09-29 20:56:02

标签: c memory-management malloc free

我有一个像

这样的功能
char *mdb_data = NULL;
int mdb_dataLen = 0;

char *getMDBDataPtr(int len)
{
    if(len <= 0)
        return NULL;

    if(mdb_data == NULL)
    {
        mdb_data = (char *)malloc(len);
        memset(mdb_data, 0, len);
        mdb_dataLen = len;
    }
    else
    {
        if(mdb_dataLen < len)
        {
            free(mdb_data);
            mdb_data=NULL;
            mdb_data = (char *)malloc(len);
            memset(mdb_data, 0, len);
            mdb_dataLen = len;
        }
    }
    return mdb_data;
}

当调用此函数一次,即mdb_data = NULL时,它可以工作。之后,当我用长度1,2,3调用它时,在释放第三种情况的内存时它失败了,即它自由工作了两次并且崩溃了应用程序。任何想法为什么会这样?

0 个答案:

没有答案