sách gpt4 ai đã đi

C - 自由()错误

In lại 作者:太空宇宙 更新时间:2023-11-04 05:53:31 25 4
mua khóa gpt4 Nike

这是我正在调试的函数:

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;
}

Đây là mymalloc 函数:

trống rỗng *
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);
#kết thúc nếu
*((char*)0) = 0 ; //###ARL provoca um exception
exit(1);
}
return p;
}

Gọi free() 函数时出现此错误。为什么? nhập mô tả hình ảnh ở đây

1 Câu trả lời

我看到的问题:

global_buffer = mymalloc(size_chunck*sizeof(char)); //3
global_buffer = buffer;

这会导致内存泄漏。 mymalloc 返回的值现已丢失。

real_data= (SP16 *)mymalloc(size_chunck*sizeof(SP16)); //3
memcpy(real_data,global_buffer,size_chunck);

free(global_buffer); //ERROR

这将是一个问题,具体取决于 buffer 的定义方式。上面的语句等价于:

free(buffer);

如果不了解函数的调用方式,很难说出为什么这是一个错误。如果不了解大局,就很难提出应该更改的建议。更具体地说,不清楚您为什么需要使用:

global_buffer = buffer;

关于C - 自由()错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33221694/

25 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com