对包含数组的结构使用 free()
Use free() for a struct containing array
typedef struct Rental {
int nDays;
float kmsDriven;
char carLicensePlate[LICENSE_PLATE_LENGTH+1];
char *clientName;
char chargingCategory;
} Rental;
我得到了上层结构,并以这种方式创建了一个指向这些结构的指针数组:
Rental* rentArray[nRent];`
我尝试使用 free 它,但 rentArray[0]
仍然不为空。怎么了?
释放内存并不意味着清除内存。释放内存范围后,指向它的指针变得无效。但是,如果其他内存请求不需要,该范围仍然可以包含以前的数据。
然而,访问这样的范围通常会导致未定义的行为。
typedef struct Rental {
int nDays;
float kmsDriven;
char carLicensePlate[LICENSE_PLATE_LENGTH+1];
char *clientName;
char chargingCategory;
} Rental;
我得到了上层结构,并以这种方式创建了一个指向这些结构的指针数组:
Rental* rentArray[nRent];`
我尝试使用 free 它,但 rentArray[0]
仍然不为空。怎么了?
释放内存并不意味着清除内存。释放内存范围后,指向它的指针变得无效。但是,如果其他内存请求不需要,该范围仍然可以包含以前的数据。
然而,访问这样的范围通常会导致未定义的行为。