Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tại sao truy cập mảng ngoài giới hạn không báo lỗi trong C++?


Điều này do C++ không kiểm tra giới hạn mảng (bounds checking). Ngôn ngữ như Java, Python có bounds checking nên ném lỗi khi truy cập vượt giới hạn. Nguyên tắc thiết kế C++ là không được chậm hơn code C tương đương, và C không kiểm tra giới hạn mảng.

Nếu truy cập bộ nhớ ngoài giới hạn, hành vi chương trình là Undefined Behavior (hành vi chưa định nghĩa) theo chuẩn C++. Khi gặp UB, bất cứ điều gì có thể xảy ra: crash, freeze, chạy tốt (hoặc trông như tốt), can thiệp chương trình khác (không thực tế trên OS hiện đại), v.v.