Memory 当malloc()返回与刚释放的地址相同的地址时,MEMDebug库出现问题
我尝试使用writen by(对不起,我没有找到任何直接联系他的方法),但我发现我的代码中有一个奇怪的问题。Memory 当malloc()返回与刚释放的地址相同的地址时,MEMDebug库出现问题,memory,Memory,我尝试使用writen by(对不起,我没有找到任何直接联系他的方法),但我发现我的代码中有一个奇怪的问题。 MEMDebug抱怨我的代码第三次进入函数时试图释放释放的对象 显然,MEMDebug在讲述一些奇怪的事情!我验证了free()和malloc()有效地调用了memdebug\uu对应函数,下面的mImgBuffer仅在该函数中操作。 代码如下: static void jpeg_init_destination (j_compress_ptr cinfo) { //printf
MEMDebug
抱怨我的代码第三次进入函数时试图释放释放的对象
显然,MEMDebug
在讲述一些奇怪的事情!我验证了free()
和malloc()
有效地调用了memdebug\uu
对应函数,下面的mImgBuffer
仅在该函数中操作。代码如下:
static void jpeg_init_destination (j_compress_ptr cinfo)
{
//printf("1 init buffer size=%d\n",imageBufferSize);
if(mImgBuffer) {
free(mImgBuffer);
mImgBuffer = NULL;
}
mImgBuffer = malloc(imageBufferSize);
mImgBufferSize = imageBufferSize;
mImgBufferWPos = 0;
cinfo->dest->next_output_byte = mImgBuffer;
cinfo->dest->free_in_buffer = imageBufferSize;
}
下面是MEMDebug
的输出:MEMDebug
怎么能告诉我?
在调用free()
之前,已成功完成对malloc()
的调用。下面是我的代码中发生的具体情况:
第一次调用jpeg\u init\u destination():调用malloc()->获取地址0x963e8c4 第二次调用
jpeg\u init\u destination()
:免费呼叫(0x963e8c4)
再次调用
malloc()
->获取地址0x963e8c4
第三次调用jpeg\u init\u destination()
:免费呼叫(0x963e8c4)->
MEMDebug
投诉!?!为什么?
如果malloc()
返回与先前释放的地址值相同的地址值,我怀疑MEMDebug
算法有问题。但事实上,这并没有错