这是我的函数,其中我调试:Ç - free()的错误
boolean
adin_memory(char* buffer, int size_chunck, int end_flag){
global_buffer = mymalloc(size_chunck*sizeof(char)); //3
global_buffer = buffer;
real_data= (SP16 *)mymalloc(size_chunck*sizeof(SP16)); //3
memcpy(real_data,global_buffer,size_chunck);
free(global_buffer); //ERROR
pos_escrita += size_chunck;
global_size = size_chunck;
global_end_flag = end_flag;
return TRUE;
}
这是mymalloc
功能:
void *
mymalloc(size_t size)
{
void *p;
if ((p = malloc(size)) == NULL) {
#if defined(_WIN32) && !defined(__CYGWIN32__)
jlog("Error: mymalloc: failed to allocate %Iu bytes\n", size);
#else
jlog("Error: mymalloc: failed to allocate %zu bytes\n", size);
#endif
*((char*)0) = 0 ; //###ARL provoca um exception
exit(1);
}
return p;
}
@ user3121023这应该是一个答案(和顺便说一句,'global_buffer'无处被定义这段代码似乎确实是一个全局变量......非常奇怪) –
建议根据广泛使用的约定,调用一个'malloc()'-wrapper检查OOM xmalloc()。 –
进一步建议不要投射从'malloc()'(或更一般的'void *'指针)返回的指针 –