4096个字节是4K对齐了吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4096个字节是4K对齐了吗?相关的知识,希望对你有一定的参考价值。
4096个字节只是4k大小,并不一定能保证其内存是4k对齐的。在系统内存足够的情况下,使用malloc等函数分配内存一般也能得到内存对齐的起始地址,但是如果有要求4k(或512字节)对齐时,最好使用专用的API来分配内存。
在VS中使用VirtualAlloc()函数分配内存,齐内存起始地址是64k对齐的,即4k也对齐;
在UNIX/linux中使用memalign()或者posix_memalign()来分配内存。 参考技术A 4K对齐一般是指你的内存起始地址要4k对齐吧。申请一个4096字节空间的内存,要保证其起始地址可以被4k整除,才叫4k对齐。 参考技术B 4096字节=4*1024B=4KB,简称4K。所以答案是yes
Visual Studio2008 C++结构体成员需要内存对齐吗?
比如结构体struct Test char a; short b; double c ;成员变量长度依次是1字节、2字节、8字节。在Visual Studio2008 C++中将结构成员对齐设置为1时,结构体长度就是11字节。结构体成员对齐设置为默认值8时,结构体长度是16字节。定义一个此结构体类型变量,读取各个成员,从汇编上可以看到,两种对齐方式下,都是一次性读完的。结构体成员对齐默认值8,除了让结构体变大了,访问效率提高了吗?往上说内存对齐也有原因是为了代码移植。代码移植是把代码转移到其他操作系统或者编译器上,结构体成员位置放置是人家的事,与Visual Studio2008 C++有何关系?
求有大神给个合理解释。。。
sizeof这个一般不咋需要吧,定义结构体为了表示一类物体的零部件的。定义结构体对象/new结构体对象、读写数据、delete结构体对象,结构体一般就这些用处。
以上是关于4096个字节是4K对齐了吗?的主要内容,如果未能解决你的问题,请参考以下文章