硬汉嵌入式论坛

 找回密码
 立即注册
查看: 807|回复: 2
收起左侧

[技术讨论] M3+支持不对齐访问,我动态申请的内存转换成结构体用于计算有没有问题?

[复制链接]

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
发表于 2021-12-27 14:08:42 | 显示全部楼层 |阅读模式
比如malloc用的sizeof(结构体)
然后结构体成员做数学计算,逻辑上应该没问题吧,不考虑效率。
以下为64位电脑测试代码:
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <stdlib.h>

  4. typedef struct
  5. {
  6.     uint8_t flag;
  7.     uint32_t value
  8. }Unaligned_ST;


  9. int main()
  10. {
  11.     uint8_t *pSt = malloc(sizeof(Unaligned_ST) + 4);
  12.     Unaligned_ST *pStruct = (Unaligned_ST*)((uint64_t)(pSt) + 1); /*故意不对齐*/

  13.     pStruct->value += 100;
  14.     pStruct->value *= 5;
  15.    
  16.     printf("pStruct->value 0x%X %d", (uint32_t)(&pStruct->value), pStruct->value);
  17.    
  18.     free(pSt);
  19.     return 0;
  20. }
复制代码




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107077
QQ
发表于 2021-12-27 15:34:43 | 显示全部楼层
没问题。
回复

使用道具 举报

210

主题

1045

回帖

1685

积分

至尊会员

More we do, more we can do.

积分
1685
 楼主| 发表于 2021-12-28 09:58:12 | 显示全部楼层
IAR参考文档(Accessing Unaligned Data):https://www.iar.com/knowledge/su ... ing-unaligned-data/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 02:06 , Processed in 0.148292 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表