Tôi nhận được lỗi seg lạ mà dường như đến từ một nơi nào đó không có trong chương trình của tôi ... không rõ ràng anyway. Tôi đang gọi "strcmp" trên hai mảng ... Cả hai mảng được lưu trữ trong cùng một loại cấu trúc. Tôi nhận được một ký hiệu chấm và một thông qua dereferencing với "->":Lỗi phân đoạn: "... không có tập tin hoặc thư mục"
int name = strcmp(one.name, two->name);
Nó biên dịch tốt nhưng khi tôi chạy, tôi nhận được lỗi seg. Tôi đã thử theo dõi nó xuống với GDB nhưng khi tôi đặt breakpoint ngay trước khi tôi nghĩ rằng nó sẽ xảy ra, nó seg lỗi anyway. Tôi nhận được:
Program received signal SIGSEGV, Segmentation fault.
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/../strcmp.S
FML. Gợi ý? Cảm ơn!
Bạn đã thử một backtrace khi nó segfaults trong gdb? –
Giá trị của 'one.name',' hai', và 'hai-> name' tại điểm gọi là gì? – Mud
Bạn đã gặp phải lỗi phân đoạn và nguồn cho 'strcmp' không tồn tại trong môi trường của bạn, Khi hệ thống cố tìm kiếm nó * sau khi * xảy ra lỗi seg. Nguồn là không cần thiết để có mặt nó là một chức năng thư viện tiêu chuẩn. Vì vậy, vấn đề là bạn đang ghi đè các giới hạn của bộ nhớ một số nơi khác. Tuyệt vời chương trình của bạn với valgrind hoặc một công cụ phân tích bộ nhớ nên cung cấp cho các chi tiết chính xác của nơi. –