【发布时间】:2014-03-20 21:45:15
【问题描述】:
我有一个指向 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 说我没有为 variable:convex 释放内存?
数组没问题,因为我喜欢这样:
x_points = (float**)malloc(sizeof(float*) * (n+1));
y_points = (float**)malloc(sizeof(float*) * (n+1));
【问题讨论】:
-
为什么在您的第一个代码示例中,您在
NULL指针上调用free?这在技术上是合法,但它是非常奇怪的事情,所以你能解释一下你为什么这样做吗? -
这些sn-ps不是很清楚;发布完整的工作计划。