Tôi có một ứng dụng mà tôi sử dụng để bắt bất kỳ lỗi phân đoạn nào hoặc ctrl-c. Sử dụng mã bên dưới, tôi có thể bắt lỗi phân đoạn nhưng trình xử lý đang được gọi đi lặp lại. Làm thế nào tôi có thể ngăn chặn chúng. Để biết thông tin của bạn, tôi không muốn thoát khỏi đơn đăng ký của mình. Tôi chỉ có thể chăm sóc để giải phóng tất cả các bộ đệm bị hỏng.Xử lý lỗi phân đoạn
Có thể không?
void SignalInit(void)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = mysighandler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
sigaction(SIGSEGV, &sigIntHandler, NULL);
}
và trình xử lý diễn ra như thế này.
void mysighandler()
{
MyfreeBuffers(); /*related to my applciation*/
}
Đây là tín hiệu lỗi phân đoạn, trình xử lý được gọi nhiều lần và MyfreeBuffers() cho tôi lỗi giải phóng bộ nhớ đã giải phóng. Tôi chỉ muốn miễn phí một lần nhưng vẫn không muốn thoát khỏi ứng dụng.
Vui lòng trợ giúp.
Đây là giải pháp tốt. Tôi đã không đặc biệt thích "để cho nó sụp đổ và sau đó phân tích các bãi chứa lõi." – dturvene