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