我有一个指向int的指针:
int* convex = (int*)malloc(sizeof(int));
if(convex == NULL) {
free(convex);
return 0;
}
然后我就这样说:
convex = check_figure(x_points, y_points);
函数已声明:
int* check_figure(float* x_points[], float* y_points[]);
然后我会:
free(convex);
for( i = 0; i < n+1; i++) {
free(x_points[i]);
free(y_points[i]);
}
free(x_points);
free(y_points);
为什么valgrind说我没有释放变量的内存:凸的?
谢谢你的回答!!! 我真的不明白!
数组没问题,因为我喜欢这样:
x_points = (float**)malloc(sizeof(float*) * (n+1));
y_points = (float**)malloc(sizeof(float*) * (n+1));
最佳答案
你分配内存
int* convex = (int*)malloc(sizeof(int));
然后重写指针
convex = check_figure(x_points, y_points);
第一个马洛克永远不会被释放。根据第一个指针的重写方式,可能会有其他内存错误。
正如注释中指出的,如果要从函数返回值,可以通过取消对指针的引用将其存储在第一个分配的int中,如:
*convex = check_figure(x_points, y_points);