对指针的操作严格按照这样:
ptr = (struct XXXX *)malloc(num * sizeof(struct XXXX);
....
free(ptr);
ptr = NULL;
但是往往会在free的时候发生段错误.
改一下:
// 在分配之前加一句判断指针是否为空,防止产生内存泄露
if (ptr == NULL) {
ptr = (struct XXXX *)malloc(num * sizeof(struct XXXX);
}
// 在释放之前加一句判断指针是否为空,防止产生异常
if (ptr != NULL) {
free(ptr);
ptr = NULL;
}