我在C++程序中为这样的边界分配值:
#include <iostream>
using namespace std;
int main()
{
int array[2];
array[0] = 1;
array[1] = 2;
array[3] = 3;
array[4] = 4;
cout << array[3] << endl;
cout << array[4] << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
程序打印3
和4
.应该是不可能的.我正在使用g ++ 4.3.3
这是编译和运行命令
$ g++ -W -Wall errorRange.cpp -o errorRange
$ ./errorRange
3
4
Run Code Online (Sandbox Code Playgroud)
只有在分配时才array[3000]=3000
会给我一个分段错误.
如果gcc没有检查数组边界,我怎么能确定我的程序是否正确,因为它可能会导致一些严重的问题?
我用上面的代码替换了
vector<int> vint(2);
vint[0] = 0;
vint[1] = 1;
vint[2] = 2;
vint[5] = 5;
cout << vint[2] << endl;
cout …
Run Code Online (Sandbox Code Playgroud) 我写了一个简单的函数如下......
int fun(int *i, int *j)
{
*i += 3;
*j += *i;
return (*i + *i);
}
Run Code Online (Sandbox Code Playgroud)
在主函数中,我将函数调用如下...
int main()
{
int x = 3, y = 2, a, b;
a = x + y + fun(&x, &y) + x;
b = y + fun(&x, &y) + y;
cout<<" a = " << a << "\n";
cout<<" b = " << b << "\n";
}
Run Code Online (Sandbox Code Playgroud)
现在问题是输出不如预期
运行后这是输出
a=23
b=52
Run Code Online (Sandbox Code Playgroud)
我在期待
a=23
b=46
Run Code Online (Sandbox Code Playgroud)
我不知道究竟是否有人可以解释.