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

Truy cập mảng vượt giới hạn (out of bounds) trong C/C++


Trong Java, ngoại lệ java.lang.ArrayIndexOutOfBoundsException xảy ra nếu truy cập mảng vượt giới hạn. Nhưng C không có cơ chế này, hành vi không xác định (undefined behaviour) xảy ra nếu truy cập mảng vượt giới hạn.

Chương trình minh họa C:

Ví dụ

#include <stdio.h>
int main() {
    int arr[] = {1,2,3,4,5};
    printf("Các phần tử mảng: ");
    for(int i = 0; i<6; i++)
        printf(" %d", arr[i]);
    return 0;
}

Kết quả

Đầu ra chương trình:

Các phần tử mảng: 1 2 3 4 5 32765

Hiểu chương trình:

Mảng arr chỉ gán giá trị đến chỉ số 4. In phần tử, arr[5] cho giá trị rác (garbage). Đoạn mã:

int arr[] = {1,2,3,4,5};
printf("Các phần tử mảng: ");
for(int i = 0; i<6; i++)
    printf(" %d", arr[i]);