问题引入:相同的有问题的代码,在4U的gcc3.4.6版本上运行良好,但是在5U的gcc4.1.2版本运行却失败!
简化问题如下:
#include <iostream>
using namespace std;
int test(void* null1, void* i, void* j, void* k, void* null2)
{
*((long*)i) = 1;
*((long*)j) = 2;
*((long*)k) = 3;
}
int main()
{
int null_1 = 0;
int myvalue_i = 3;
int myvalue_j = 5;
int myvalue_k = 5;
int null_2 = 0;
test(&null_1, &myvalue_i, &myvalue_j, &myvalue_k, &null_2);
cout << "i=" << myvalue_i << ",j=" << myvalue_j << ",k=" << myvalue_k<< endl;
return 0;
}
//相同的代码,在4U的机器上做测试:(gcc 3.4.6)
[root@machine1 test]$ g++ t.cpp
[root@machine1 test]$ ./a.out
i=0,j=0,k=3
[root@machine1 test]$ g++ t.cpp -O2
[root@machin