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++有何关系?
求有大神给个合理解释。。。

参考技术A 效率有提高。除非你使用sizeof之类的,否则大小影响不大。追问

sizeof这个一般不咋需要吧,定义结构体为了表示一类物体的零部件的。定义结构体对象/new结构体对象、读写数据、delete结构体对象,结构体一般就这些用处。

以上是关于4096个字节是4K对齐了吗?的主要内容,如果未能解决你的问题,请参考以下文章

SSD格式化时候用NTFS好还是fat32好?是用win7格式化选4096字节就自动4K对齐了吗?

linux 下ssd分区,4k对齐

U盘需要进行4K对齐吗

如何使用parted对齐分区以得到最优性能

查看4k对齐,激活.net framework 3.5

SSD中4K对齐是啥意思?一定要对齐吗?不对齐不行吗?普通机械硬盘怎么没听说有这个。