Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
内存对齐_align
rt_malloc_align函数内存越界问题
发布于 2025-05-13 10:03:29 浏览:47
订阅该版
~~~ void *rt_malloc_align(rt_size_t size, rt_size_t align) { void *align_ptr; void *ptr; rt_size_t align_size; /* align the alignment size to 4 byte */ align = ((align + 0x03) & ~0x03); /* get total aligned size */ align_size = ((size + 0x03) & ~0x03) + align; /* allocate memory block from heap */ ptr = rt_malloc(align_size); if (ptr != RT_NULL) { /* the allocated memory block is aligned */ if (((rt_uint32_t)ptr & (align - 1)) == 0) { align_ptr = (void *)((rt_uint32_t)ptr + align); } else { align_ptr = (void *)(((rt_uint32_t)ptr + (align - 1)) & ~(align - 1)); } /* set the pointer before alignment pointer to the real pointer */ *((rt_uint32_t *)((rt_uint32_t)align_ptr - sizeof(void *))) = (rt_uint32_t)ptr; ptr = align_ptr; } return ptr; } ~~~ 代码如上所示。 条件:align = 4,rt_malloc申请到的内存地址为0x2000001,`sizeof(void*) = 4` 结果: `align_ptr = 0x2000004` 则: `*((rt_uint32_t *)((rt_uint32_t)align_ptr - sizeof(void *))) = (rt_uint32_t)ptr;` 用`0x2000000~0x2000003`四个字节用来保存真实申请的内存地址(0x2000001),而0x2000000并不是申请到的内存,会造成内存越界操作。
查看更多
1
个回答
默认排序
按发布时间排序
三世执戟
3天前
这家伙很懒,什么也没写!
>rt_malloc申请到的内存地址为0x2000001 这步就有问题吧,看用的哪个内存管理,应该至少让申请出来就是4字节或8对齐的。 rt_malloc_align是用来申请32或64字节对齐的内存,一般用在DMA与cache line对齐的场合。
撰写答案
登录
注册新账号
关注者
1
被浏览
47
关于作者
一屋不扫何以扫天下
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
studio 字节对齐问题求解
2
ALIGN(RT_ALIGN_SIZE)问题
3
线程中对double赋值会引起 UNALIGNED ?
4
SCB_CFSR_UFSR:0x100 UNALIGNED问题
5
程序75行一赋值就挂掉,不知什么原因
6
stm32h7 非对齐访问出现HardFault
7
字节对齐 ALIGN(RT_ALIGN_SIZE)的用法
8
函数地址指针赋值问题
9
给float指针赋值引发 UNALIGNED 错误,请教原因与优化手段
10
AC6优化等级-OZ后,触发错误中断,错误原因:企图执行非对齐访问,如何解决?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
基于RT-Thread的STM32F4开发第四讲——硬件定时器更新中断(缺失补齐教程)
2
基于RT-Thread的STM32F4开发第三讲——DAC
3
Wireshark抓包EtherCAT报文
4
RISC-V hardfault分析工具,RTTHREAD-RVBACKTRACE 原理讲解
5
基于RT-Thread的STM32G4开发第二讲第二篇——ADC
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
820
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部