我有一个指向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);

09-25 20:23