我有类似于下面的代码。
int foo (unsigned int a)
{
struct tid{
int id;
char abd[8];
};
int ret = 0;
struct tid arr[256];
ret = arr[a];
...
}
传递给 foo 的值是 0xFFFFFFFF。现在,由于我们正在访问堆栈之外的内存位置,我会假设系统会出现故障,但事实并非如此。我想知道一个方向,我可以看看它是如何工作的。正在考虑的机器是 MIPS 4K,具有 32 位寻址和 256 MB RAM。我正在使用 gcc 在 x86 PC 上交叉编译代码。