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