打印

有一个问题,关于malloc分配内存的开始地址。

[复制链接]
3106|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luocolor|  楼主 | 2007-10-23 18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
in现在有个问题,我用malloc来分配一段内存,并需要将该段内存的地址写入一个寄存器。但,该寄存器是256字节对齐的,即在写入时,会自动将写入值的低8位清0.

现在,的问题是,怎样在malloc的时候在256字节对齐地址出开始分配内存呢?我想过,如果先分配段内存,然后先<<8,再>>8,这样会造成其他的问题!这个问题用文字不好说清楚,就不说了。

相关帖子

沙发
mohanwei| | 2007-10-23 18:13 | 只看该作者

多申请一点,刨去前面不整的部分不就得了?

比如说申请到的首址是0x1234,那么你取0x1300好了。注意最少要多申请256字节!

使用特权

评论回复
板凳
wishcom| | 2007-10-23 20:38 | 只看该作者

既然malloc不好解决为什么不用静态分配呢

另外:
如果你的堆区起始地址是256字节对齐的,并且最小malloc单位是256字节对齐的,则随便一个malloc得到的地址都是256字节对齐的。这种情况应该也不难实现。

使用特权

评论回复
地板
xieqin| | 2007-10-24 13:59 | 只看该作者

还不如自己去设计内存管理

建一个块内存池,每个块的大小是256字节, 相邻块可以合并在一起. 这样做就不浪费了,并且还能保证对齐

前提是:第一个块的首地址要是256字节对齐的. 这个很容易实现!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

105

帖子

0

粉丝