关于aix6.1系统内代码函数调用过程中栈数据异常变化的问题。请大家指教,郁闷的要命
最近在aix系统上调试代码,版本aix6.1.64位,发现一个很奇怪的现象,比如代码中出现下列调用关系。
int a()
{
struct xx * temp = b();
}
struct xx * b()
{
struct xx *temp = malloc(16);
if(NULL !=temp)
{
return (temp );
}
}
在函数b中,假设申请到的内存数据是:0x0000000110211e50。 这个指针是没问题的,可以赋值,但是等到return以后,在a中指针数据变成了0x0000000010211e50,也就是说,低三十二位没问题,高出32位的第33位的1变成0了,
我自己写了一个简单的app是没问题的,但是调试过程中每次必出,郁闷,有哪位大侠遇到过的?是编译选项的问题么?给点指点吧。多谢