Theo this reddit comment thread, nó không xác định được nếu một nỗ lực được thực hiện để đọc bộ nhớ trước khi nó được ghi vào. Tôi đang đề cập đến bộ nhớ heap bình thường đã thành công malloc
ed.đọc trước khi ghi là không xác định với bộ nhớ malloced?
... lưu ý rằng đây không phải là hợp lệ C: hệ thống trình biên dịch/thời gian chạy được phép khởi tạo bộ nhớ không khởi tạo với biểu diễn cái bẫy gọi là hành vi không xác định khi truy cập.
Tôi thấy khó tin. Có báo giá chuẩn không?
Tất nhiên, tôi hiểu rằng không có gì đảm bảo rằng bộ nhớ đã bị xóa. Các giá trị trong bộ nhớ uninitialized này về cơ bản là giả ngẫu nhiên hoặc tùy ý. Nhưng tôi thực sự không thể tin rằng tiêu chuẩn sẽ ám chỉ điều này là hành vi không xác định (theo nghĩa là nó có thể phân đoạn hoặc xóa tất cả các tệp của bạn hoặc bất kỳ tệp nào). Phần còn lại của chuỗi reddit không có thêm chút ánh sáng nào về vấn đề này.
Erm, bạn nghĩ hành vi không xác định nghĩa là gì? (Có, sử dụng bộ nhớ phân bổ trước khi nó được khởi tạo tạo ra hành vi không xác định) –
@Brian Tôi giả sử anh ta hỏi liệu toàn bộ hành vi (tức là segfault này) là không xác định, hoặc chỉ là giá trị mà kết quả từ việc đọc. – Owen
@Owen, đúng vậy, tôi đã cập nhật câu hỏi cho phù hợp. –