在標準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中文網其他相關文章!