已知一个变量地址,且知道该变量是一结构体的某一变量,现在想通过该地址访问到结构体的其它变量。
以上是可以实现的,比如上将其减掉地址偏移再强制类型转化即可以访问了,但这是不安全的,因为不同的机器(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);
}
...
以上是不断比较是否访问对齐好了,才退出,但我不敢保证其它全性,而且方法也太烂啦,哈哈。
打赏帖 | |
---|---|
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 | |
【换取手持示波器】树莓派PICO逻辑分析仪被打赏16分 |