社区
进程/线程/DLL
帖子详情
内存分配粒度,页的大小,对齐
jadyzdr
2010-10-14 09:12:29
我知道现在的系统一般内存分配粒度是64kb,也的大小是4k,但是不明白他们分配的时候有个对齐,对于这个对齐怎么的原理,还有,分配粒度和页是用来干什么的,和内存分配什么关系,
...全文
985
6
打赏
收藏
内存分配粒度,页的大小,对齐
我知道现在的系统一般内存分配粒度是64kb,也的大小是4k,但是不明白他们分配的时候有个对齐,对于这个对齐怎么的原理,还有,分配粒度和页是用来干什么的,和内存分配什么关系,
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
riheyljh
2010-10-23
打赏
举报
回复
[Quote=引用 5 楼 riheyljh 的回复:]
引用 1 楼 coding_hello 的回复:
这是个大话题,基本的原因就是效率。
同样是分配4kb内存,那么是从0x100000开始分配4k好呢,还是从0x100001开始分配4k好呢?这就是需要对齐的原因。
为什么要对齐呢,1楼的已经说了,是效率问题,其实你可以看看计算机原理的书籍,现代计算机读取内存的时候,一般只能在偶数边界上开始读,什么意思呢,我们打个比方,在32……
[/Quote]
然后这个变量的值就是前4个字节的
后三位
和后4个字节的
第一位
,这里应该前4个字节的后三个字节和后4个字节的第一个字节!
riheyljh
2010-10-23
打赏
举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
这是个大话题,基本的原因就是效率。
同样是分配4kb内存,那么是从0x100000开始分配4k好呢,还是从0x100001开始分配4k好呢?这就是需要对齐的原因。
[/Quote]
为什么要对齐呢,1楼的已经说了,是效率问题,其实你可以看看计算机原理的书籍,现代计算机读取内存的时候,一般只能在偶数边界上开始读,什么意思呢,我们打个比方,在32位的机子上,一个int变量变量占用4字节,假如这个变量的真实物理内存地址是0x400005,那计算机在取数的时候会先从0x400004取4个字节,再从0x400008取4个字节,然后这个变量的值就是前4个字节的后三位和后4个字节的第一位,也就是说如果一个变量的地址从奇数开始,就可能要多读一次内存,而如果落在从偶数开始,特别是计算机位数/8的倍数开始,效率就高了!
jadyzdr
2010-10-20
打赏
举报
回复
[Quote=引用 3 楼 hxfjb 的回复:]
个人感觉:
1 对齐和分配粒度类的问题,是相对于虚拟内存分配函数而言的,即virtualAlloc之类的函数。而对于在堆和栈上的内存,就没有这个问题。
2 对齐是上取整,假如你要在基地址为0x10的地方申请内存,那么分配出来的内存是从0x1010的地方开始的。
3 分配的粒度是内存最小分配大小。比如你在0x10的地方申请分配4097个字节的内存,那么实际分配的大小是4097/4k+4K=8K……
[/Quote]
4097/4k+4k=8k。这个怎么算的啊,4097/4k不是等于0吗
还有这句话“对齐是上取整,假如你要在基地址为0x10的地方申请内存,那么分配出来的内存是从0x1010的地方开始”为什么是从1010开始分配啊
hxfjb
2010-10-18
打赏
举报
回复
个人感觉:
1 对齐和分配粒度类的问题,是相对于虚拟内存分配函数而言的,即virtualAlloc之类的函数。而对于在堆和栈上的内存,就没有这个问题。
2 对齐是上取整,假如你要在基地址为0x10的地方申请内存,那么分配出来的内存是从0x1010的地方开始的。
3 分配的粒度是内存最小分配大小。比如你在0x10的地方申请分配4097个字节的内存,那么实际分配的大小是4097/4k+4K=8K的大小。
dxshenhua
2010-10-18
打赏
举报
回复
其实这个“对齐”的说法误导了很多人,比较容易理解的说法应该是向上取整。至于这个“整”是多少,可能是4个字节,也可能是4K.
野男孩
2010-10-16
打赏
举报
回复
这是个大话题,基本的原因就是效率。
同样是分配4kb内存,那么是从0x100000开始分配4k好呢,还是从0x100001开始分配4k好呢?这就是需要对齐的原因。
cma.rar_return
在IT领域,内存管理是操作系统的核心部分之一,而
页
帧号(PFN)
对齐
和
内存分配
的
粒度
控制是内存管理的重要概念。标题中的“cma.rar_return”可能指的是一个与“Compact Memory Allocator”(CMA)相关的压缩文件,...
内存分配
粒度
vs内存分
页
大小
vs内存空间
当请求一块内存的时候,系统每次分配出来的内存空间的最小度为分配粒,这个分配
粒度
就是
对齐
值,32位机器上是64K
大小
; 而分
页
时,每一
页
在32位机器上是4K,当需要6K的时候,它会将这6K的数据放在两
页
中,一
页
4K,一...
内存
对齐
(字节
对齐
)两三事
目录什么是内存
对齐
为什么要内存
对齐
怎么内存
对齐
示例字节
对齐
算法ios获取内存
大小
sizeofclass_getInstanceSizemalloc_size 什么是内存
对齐
先看下面这个结构体 struct Test{ int a; char b; }; 如果没有内存
对齐
...
C++
内存分配
与内存
对齐
一、C++程序
内存分配
C/C++程序编译时内存分为5大存储区 栈区,由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。通俗来讲就是函 数中的变量参数等等,即{}中的内容。...
字节
对齐
/内存
对齐
/
对齐
粒度
也就是C++中类和结构体在内存中的分配策略,专业术语可以称之为“
对齐
模数(Alignment Modules)”。
对齐
模数分为三类: 1.自身
对齐
模数,也就是类或结构体中成员的
大小
,1,2,4,8之中的一个,对应BYTE WORD DWORD ...
进程/线程/DLL
15,467
社区成员
49,170
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章