【发布时间】:2015-12-05 15:23:10
【问题描述】:
typedef struct Rental {
int nDays;
float kmsDriven;
char carLicensePlate[LICENSE_PLATE_LENGTH+1];
char *clientName;
char chargingCategory;
} Rental;
我得到了上层结构,并以这种方式创建了一个指向这些结构的指针数组:
Rental* rentArray[nRent];`
我尝试免费使用它,但rentArray[0] 仍然不是空的。怎么了?
【问题讨论】:
-
不清楚你在问什么。 1.
free()不会清除作为参数传递的变量,因为它不会接受要清除的变量指针。 2.如果你在释放rentArray[0]之后尝试去引用它,你就错了。不要访问已释放的内存! -
如何推断数组元素不正确
freed?free释放内存但没有将释放的指针设置为NULL。 -
我想删除我之前保存在 struct 中的内容。 free() 还不够?
-
解释Jongware的评论,你怎么知道“例子仍然不是空的”?一旦你释放了内存,你就不能以任何方式可靠地检查它,那么你是如何得出这个结论的呢?在大多数实现中,如果你释放它,数据不会改变,访问它可能看起来什么都没有发生。
-
尝试使用
memset()或在释放它之前清除结构的内容。