提问者:小点点

如何返回分段错误在我的自定义类在C++?


我正在手动使用链表构建堆栈类。 当对空堆栈调用top()函数时,我希望返回分段错误。 我怎么能那么做? 或者我可以返回的其他错误。


共2个答案

匿名用户

分段故障由硬件触发,由操作系统处理。 您不能手动触发它们。

您可以抛出一个异常:http://www.cplusplus.com/doc/tutorial/exceptions/或者您可以决定某个指示错误的值并返回该值。

如果您有一个指向列表为空时为null的第一个元素的指针,也可以像有值一样取消引用它。 这有时会导致分段错误,有时会返回假数据。 在这种情况下,由用户决定是否对空列表调用top。 通常,代码在某些情况下不保证segfault。 相反,当硬件设法捕获坏的内存访问时,有时就会发生这种情况。

如果您发布了您的代码,那么就更容易说明如何在具体案例中报告错误。

匿名用户

我怎么能那么做?

您可以引发(SIGSEGV)。 或者abort()执行。

您还可以强制从无效内存地址读取,例如从空指针读取,如:*(volatile int*)0;

或者我可以返回的其他错误。

您绝对不应该故意在程序中造成分段错误条件。 而是使用异常。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(返回|分段|自定义|类|c++)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?