我正在运行以下代码:
if (tuple != NULL) {
printf("tuple is not null\n\n"); fflush(stdout);
if (tuple->tuple != NULL) {
printf("tuple tuple is not null\n\n"); fflush(stdout);
int i;
for (i = tuple->tuple_dimension -1; i >= 0 ; i--)
if (tuple->tuple[i] != NULL) {
free(tuple->tuple[i]);
}
else
break;
free(tuple->tuple);
}
printf("i got here :D\n\n"); fflush(stdout);
free(tuple);
}
它在第一次运行时完美运行,但第二次它似乎在第二次if
的情况下失败并且给我一个分段错误。我收到了这个输出:
tuple is not null
tuple tuple is not null
i got here :D
tuple is not null
Segmentation fault (core dumped)
根据我的理解,它既没有进入if
正文也没有跳过它,所以它在调用tuple -> tuple
时失败了,但如果我们知道tuple
不是,那怎么可能呢?空?