首頁 > 後端開發 > C++ > 如何捕捉標準 C 中的記憶體存取衝突異常?

如何捕捉標準 C 中的記憶體存取衝突異常?

Mary-Kate Olsen
發布: 2024-12-24 13:14:14
原創
432 人瀏覽過

How Can I Catch Memory Access Violation Exceptions in Standard C  ?

在標準C 中捕獲記憶體存取衝突異常

標準C 對捕獲記憶體存取衝突異常提供有限的支持,而無需求助Microsoft特定的方法

範例:

考慮程式碼:

int *ptr;
*ptr = 1000;
登入後複製

嘗試取消引用未初始化的指標通常會導致存取衝突異常。然而,標準 C 並沒有提供專門的機制來處理此類異常。

解決方案:

技巧在於在訊號處理程序中拋出自定義異常並捕捉它外部。這是實作:

#include <signal.h>

void SignalHandler(int signal) {
    printf("Signal %d", signal);
    throw "!Access Violation!";
}

int main() {
    signal(SIGSEGV, SignalHandler);
    try {
        *(int *) 0 = 0; // Trigger access violation (intentionally bad code)
    } catch (const char *e) {
        printf("Exception Caught: %s\n", e);
    }
    printf("Execution continues... (Note: Bad coding practices should be avoided)");
}
登入後複製

發生存取衝突時,會拋出自訂異常並在訊號處理程序外部擷取。這允許自訂異常處理,而不依賴 Microsoft 特定的擴充功能。

以上是如何捕捉標準 C 中的記憶體存取衝突異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板