数组越界访问测试
程序员文章站
2024-03-15 14:02:11
...
对int nums[10]进行数组越界测试
文件test.cpp
第一次测试
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int nums[10] = {0,1,2,3,4,5,6,7,8,9};
cout << nums[10];
return 0;
}
用g++命令编译
程序没有崩溃,输出一个随机数
第二个程序如下
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int nums[10] = {0,1,2,3,4,5,6,7,8,9};
nums[10] = 10;
return 0;
}
发生段错误(core dumped)
在Visual studio下一样。
总之,程序无法发现数组越界读取的错误,但是在发生数组越界写入的时候会发生段错误(core dumped)。
对vector nums(10)进行数组越界测试
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> nums{0,1,2,3,4,5,6,7,8,9};
cout << nums.size() << endl;
nums[101] = 10;
cout << nums[101] << endl;
return 0;
}
在g++平台下
程序无任何报错
但在visual studio平台下,程序1
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> nums{ 0,1,2,3,4,5,6,7,8,9 };
cout << nums.size() << endl;
nums[10] = 10;
return 0;
}
程序二
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> nums{ 0,1,2,3,4,5,6,7,8,9 };
cout << nums.size() << endl;
cout << nums[10] << endl;
return 0;
}
再visual studio平台下,vector数组,程序运行只要发生越界访问,程序运行就会发生错误。
总结,g++对于vector数组,无法发现越界访问;visual studio 对于vector数组越界访问能够发现并报错。
上一篇: C# 读取照片的EXIF信息
下一篇: 如何在Eclipse中配置热部署