C 多次调用free会使应用程序崩溃
我有一个函数C 多次调用free会使应用程序崩溃,c,memory-management,malloc,free,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
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;
}
char*mdb_data=NULL;
int mdb_dataLen=0;
char*getMDBDataPtr(int len)
{
如果(len发布的看起来不错。您是否有机会修改调用方中的mdb_数据
。。我使用它通过Socket接收数据。可能其他地方的缓冲区溢出正在破坏内存。请显示使用此功能的代码。我建议您使用realloc
而不是free
和malloc
。im实现可能能够检测到由于填充,新分配可以使用与旧分配相同的空间。