我有一个像
这样的功能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调用它时,在释放第三种情况的内存时它失败了,即它自由工作了两次并且崩溃了应用程序。任何想法为什么会这样?