假设我使用了一个
如果可以的话,
free()
函数释放了一块内存,但由于某些原因我不被允许这样做。我应该如何防止 C 应用程序崩溃并生成错误信息以继续执行?我没有 try-catch 这种处理机制(类似于 C++/Java...)。有没有办法忽略这个错误并继续执行?如果可以的话,
- 你该如何做到这一点?
- 更重要的是,考虑到出现内存错误,这样继续执行是否可取?
free()
的指针指向一个有效的内存块吗?如果调用free()
导致崩溃,那么你可能有更大的问题。 - In silicofree
传递给未被malloc
(或calloc
、realloc
等)返回的内容,则行为是未定义的。未定义的行为可能包括终止程序。有很多有效的指针malloc
没有返回,也有很多无效的指针malloc
确实返回了。指针的有效性是无关紧要的。 - Rob Kennedy