在之前需要高健壮性和长启动时间的大规模应用程序中,我一直在验证指针函数参数,当它被记录为“绝不能为NULL”时.如果参数在C中实际为NULL并在C中返回错误代码,那么我会抛出一个std :: invalid_argument异常或类似的异常.
但是,我开始认为也许最好让应用程序立即在同一个函数中的第一个NULL指针取消引用中爆炸 – 然后崩溃转储文件将揭示发生了什么 – 并让一个彻底的测试过程发现坏的函数调用.
不检查NULL并让应用程序爆炸的一个问题是,如果指针实际上没有在该函数中解除引用,而是存储以供以后使用,那么解除引用爆炸将脱离上下文并且更难以诊断.
有关于此的任何想法或最佳做法?