Computer >> Máy Tính >  >> Lập trình >> C ++

Tại sao truy cập một mảng ngoài giới hạn không gây ra bất kỳ lỗi nào trong C ++?

Điều này là do C ++ không kiểm tra giới hạn. Các ngôn ngữ như Java và python có tính năng kiểm tra giới hạn, vì vậy nếu bạn cố gắng truy cập vào một phần tử nằm ngoài giới hạn, chúng sẽ gây ra lỗi. Nguyên tắc thiết kế C ++ là nó không được chậm hơn mã C tương đương và C không thực hiện kiểm tra giới hạn mảng.

Vì vậy, nếu bạn cố gắng truy cập bộ nhớ này ngoài giới hạn, hành vi của chương trình của bạn là không xác định vì điều này được viết trong tiêu chuẩn C ++. Nói chung, bất cứ khi nào bạn gặp phải hành vi không xác định, bất cứ điều gì có thể xảy ra. Ứng dụng có thể bị treo, có thể bị đóng băng, có thể chạy tốt (hoặc ít nhất là có vẻ chạy tốt), có thể ảnh hưởng đến các ứng dụng khác (không thực sự có trên các hệ điều hành hiện đại), v.v.