我有一个指向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);为什么瓦伦说我没有把记忆释放给变量:凸的?
数组没有问题,因为我确实喜欢这样:
x_points = (float**)malloc(sizeof(float*) * (n+1));
y_points = (float**)malloc(sizeof(float*) * (n+1));发布于 2014-03-20 21:47:12
你分配内存
int* convex = (int*)malloc(sizeof(int));然后重写指针
convex = check_figure(x_points, y_points);首先,malloc从未被释放。根据您使用的第一个指针覆盖的内容,您可能会有其他内存错误。
正如注释中指出的,如果要从函数返回值,可以通过取消引用指针将其存储在第一个分配的int中,如下所示:
*convex = check_figure(x_points, y_points);https://stackoverflow.com/questions/22545796
复制相似问题