已知一个变量地址,且知道该变量是一结构体的某一变量,现在想通过该地址访问到结构体的其它变量。
以上是可以实现的,比如上将其减掉地址偏移再强制类型转化即可以访问了,但这是不安全的,因为不同的机器(8位、16位、32位)编译时的对齐不一样,造成访问混乱,请问有没有比较安全的方法?
当然,我也用过如下方法,结果是OK了,但不敢确定其安全性,希望大家出出主意,谢谢啦!~
void Action(unsigned char * buff)
{
int len;
ActionStruct * Block;
Block = (MemoryBlock *)(buff);
while((Block->Data) != buff)
{
len = ((Block->Data) - buff);
Block = (ActionStruct *)((unsigned char *)Block-len);
}
...
以上是不断比较是否访问对齐好了,才退出,但我不敢保证其它全性,而且方法也太烂啦,哈哈。
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3学习整理】使用 LPUART 的loopback 模式实现核间通讯被打赏¥28元 | |
| arduinounoq原生zephyr环境搭建被打赏¥31元 | |
| 树莓派3+Klipper,MPU6050共振补偿被打赏¥41元 | |
| GroveCreatorKit套件+摇杆测评被打赏¥18元 | |
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
我要赚赏金
