分段故障由硬件触发,由操作系统处理。 您不能手动触发它们。
您可以抛出一个异常:http://www.cplusplus.com/doc/tutorial/exceptions/或者您可以决定某个指示错误的值并返回该值。
如果您有一个指向列表为空时为null的第一个元素的指针,也可以像有值一样取消引用它。 这有时会导致分段错误,有时会返回假数据。 在这种情况下,由用户决定是否对空列表调用top。 通常,代码在某些情况下不保证segfault。 相反,当硬件设法捕获坏的内存访问时,有时就会发生这种情况。
如果您发布了您的代码,那么就更容易说明如何在具体案例中报告错误。
我怎么能那么做?
您可以引发(SIGSEGV)
。 或者abort()
执行。
您还可以强制从无效内存地址读取,例如从空指针读取,如:*(volatile int*)0;
。
或者我可以返回的其他错误。
您绝对不应该故意在程序中造成分段错误条件。 而是使用异常。