请教关于总线错误(Bus error) 和 定位处理问题.

2025-04-30 15:22:37
推荐回答(1个)
回答1:

1 在SPARC等RISC类型的CPU中,int型数据在内存中4字对齐,char buf[256]s虽然是char型,但为256个(4的倍数),所以编译器也使其4字对齐,及其内存开始地址必为4的整数倍,例如0x1000;
2。 该句表述错误,实际应为“在RISC类型的CPU中,数据类型int值只能存储在4的整数倍地址中”
3 此处强制类型转换的是指针而非char型变量,指针指向的内存只不过是一些数据,你可以认为这些数据是任意类型,char、int 、float、double甚至结构
4 假设buf的开始地址为0x1000,则这句将0x1001~0x1004的内容拷贝给x(x为int型),如前所述,int型数据地址必须为4的整数倍,此处0x1001不满足该条件,故会引起CPU内部总线错误