C++什么时候会出现越界访问的情况

C++ 中越界访问是一种程序错误,它可能导致程序崩溃、未定义行为或者产生不可预测的结果。

越界访问通常发生在数组、指针、容器等数据结构的操作中。

图片[1]-C++什么时候会出现越界访问的情况-不念博客

可能导致越界访问的情况:

1.数组越界:访问数组元素时,索引超过数组的有效范围。

int arr[5];
arr[5] = 42; // 越界访问

2.指针越界:通过指针访问内存时,超出了指向对象的有效范围。

int arr[5];
int* ptr = arr;
*(ptr + 5) = 42; // 越界访问

3.迭代器越界:在使用容器的迭代器时,超出了容器的有效范围。

#include <vector>
#include <iostream>

int main() {
    std::vector<int> vec = {1, 2, 3};
    auto it = vec.begin();
    ++it;
    ++it;
    ++it;
    std::cout << *it << std::endl; // 越界访问
    return 0;
}

4.字符串越界:对字符串进行操作时,超出了字符串的有效范围。

#include <iostream>
#include <string>

int main() {
    std::string str = "Hello";
    char ch = str[10]; // 越界访问
    std::cout << ch << std::endl;
    return 0;
}
© 版权声明
THE END