【发布时间】:2021-03-17 10:41:24
【问题描述】:
我正在编写一个程序,其中指向我正在使用的STR 类型结构的指针STR *pt(基本上是我想要使用动态内存的STR 结构数组)可能采用NULL 值因为有时我不想通过它存储任何数组,所以当我在该指针上使用free(pt) 时,我会遇到分段错误。我想要检查指针是否具有NULL 值,但是当我检查if(pt != NULL) free(pt); 时(我只想在指针不是NULL 时释放内存),条件始终为真,试图释放指针并发生分段错误。
有什么办法可以解决这个问题吗? 比较指针值的另一种方法?
【问题讨论】:
-
你提到的
free(NULL)不会导致故障,它是由于试图free一个指针,其值不是从malloc等获得的。欢迎使用StackOverflow!请张贴Minimal Reproducible Example,这是显示问题的最短完整代码。 -
您是否碰巧在使用 1990 年代的工具链?
-
您的问题不是因为
pt为NULL,而是它无效(例如,堆损坏,您修改了 *alloc 返回的原始指针等)。
标签: c pointers null segmentation-fault free