标题:这个变量在哪里free()呢?
作者:mugua001
日期:2021-08-04 00:55
内容:
请问:unsigned char *data = (unsigned char *)malloc(*len);
这个在哪里 free(data)呢?
//---------------代码如下-----------------
static unsigned char* unpack_padding_pkcs5(const unsigned char in[], int *len){
unsigned char paddNum = in[*len - 1];
if(paddNum > 8){
*len = 0;
return NULL;
}
*len = *len - paddNum;
unsigned char *data = (unsigned char *)malloc(*len);
memset(data, 0, *len);
memcpy(data, in, *len );
return data;
}
#1 [kaon 08-04 07:58]
不在这个函数中free
#2 [九重水 08-04 09:06]
楼主需要补充一下C的知识,在这里free的话,返回的data就可能错误了,因为你提前释放了内存。
#3 [青空飞羽 08-04 10:21]
不再使用的时候free
#4 回 九重水 的帖子 [mugua001 08-04 13:44]
九重水:楼主需要补充一下C的知识,在这里free的话,返回的data就可能错误了,因为你提前释放了内存。 (2021-08-04 09:06)
是的,不能在这个函数里free;
可是在它调用返回之后,再free时,针对哪个 针对进行free呢?这就是我没看明白的地方
#5 回 九重水 的帖子 [mugua001 08-04 13:45]
九重水:楼主需要补充一下C的知识,在这里free的话,返回的data就可能错误了,因为你提前释放了内存。 (2021-08-04 09:06)
是的,不能在这个函数里free;
可是在它调用返回之后,再free时,针对哪个 对象 进行free呢?这就是我没看明白的地方