[英]Freeing a pointer of pointers in outside function
p1 指针用于其他功能,没有任何变化。 并且当不再需要调用free_stuffs
函数但调用free_stuffs
时,我得到双重释放或损坏(输出)中止(核心转储)
char **someFunction(){
const char ** p1 = (char **)malloc(total * sizeof(char *));
for (int i = 0; i <= total; i++){
*(p1 + i) = (char *)malloc(len * sizeof(char) +1);
}
return p1;
}
void free_stuffs(char ** p1){
for (int i = 0; i <= total; i++){
free(p1[i]);
}
free(p1);
}
您只分配total
元素,但使用total+1
元素( 0
到total
)。
分配足够的元素来修复错误。
char **someFunction(){
/* allocate total+1 elements instead of total */
const char ** p1 = malloc((total + 1) * sizeof(char *));
for (int i = 0; i <= total; i++){
*(p1 + i) = malloc(len * sizeof(char) +1);
}
return p1;
}
另请注意, malloc()
系列的强制转换结果被认为是一种不好的做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.