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

How to return Segmentation fault in my custom class in C++?

本文关键字:分段 错误 返回 C++ 自定义      更新时间:2023-10-16

我正在使用链表手动构建堆栈类。我想在空堆栈上调用 top(( 函数时返回分段错误。我该怎么做?或者我可以返回的其他一些错误。

分段错误由硬件触发并由操作系统处理。您不会手动触发它们。

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

如果在列表为空时有一个指向第一个元素的指针为 null 或悬空(即指向未初始化/释放的内存(,您也可以取消引用它,就好像有一个值一样。这有时会导致分段错误,有时会返回虚假数据。在这种情况下,用户不能在空列表中调用 top。通常,代码不保证在某些情况下会出错。相反,当硬件设法捕获错误的内存访问时,有时会发生这种情况。

如果您发布代码,则更容易说明如何在具体情况下报告错误。

我该怎么做?

你可以raise(SIGSEGV).或者abort()执行。

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

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

您绝对不应该故意在程序中造成分段错误情况。请改用例外。