对不起,我知道我不应该 free() 两次指针,但是我如何检查是否还没有空闲?检查是否为空?我不知道,因为有人告诉我 free() 命令不会在内存中写入 null 而是简单地释放空间!帮助 !!多谢 !
void buffer_destroy(buffer_t* buffer){
if(buffer==NULL){
return ;
}
int i;
if(buffer->size>0){
for(i=0;i<buffer->size;i++){
msg_destroy_string(buffer->array_msg[i]);
}
}
free(buffer->array_msg);
free(buffer);
实际上我在buffer.ca线程中有一个启动一个函数并将名为“buffer”的指针作为参数。然后我在这个线程上调用一个pthread_join但我不知道在他的启动时是否自动传递所有参数(在这种情况下这个称为“缓冲区”的指针)将是免费的()。因为在第二个时刻它出现了一个错误/异常在双 free() 调用上,所以可能在线程结束时自动调用了第一个 free,因为我使用“缓冲区”作为参数?