我读的东西像指针必须是字节对齐的。 我在一个典型的32位架构中的理解......所有的指针都是字节对齐的......不是?指针始终是字节对齐的
请确认。
可以有一个不是字节对齐的指针吗?
基本上这是在tx描述符内存的硬件参考手册中提到的。
我读的东西像指针必须是字节对齐的。 我在一个典型的32位架构中的理解......所有的指针都是字节对齐的......不是?指针始终是字节对齐的
请确认。
可以有一个不是字节对齐的指针吗?
基本上这是在tx描述符内存的硬件参考手册中提到的。
是的,你不能解决任何数量的小于一个字节的内存。
如果指针或数字不是字节对齐的,它将在一个字节的中间开始。即一个字节的某些位将属于一个指针,而其他位则属于另一个指针。这很奇怪,并且在实践中不会发生。
不会发生不能发生,因为一个字节是最小的可寻址单位... – Spudd86 2010-06-15 17:53:30
在C中,指针指向一个对象和匕首;
唯一不是整数个字节的对象是位域。
C语言不允许您创建指向位字段的指针;这个代码将导致一个编译错误:“不能把位字段‘B’的地址”:
struct S { unsigned int a:4, b:4, c:4, d:3, e:1; };
int main (void) {
struct S s;
int *i = &s.b; // would point half a byte into s
return 0;
}
指针只能通过对象的指向的大小的整数递增。
由于您不能创建一个指向大小小于一个字节的对象的指针,或者将指针增加一个小于一个字节,所以不能有小于一个字节对齐的指针。
†在C意义上,不是OO意义
+1对于匕首和/对于笔记 – ShinTakezou 2010-06-15 13:39:50
你的意思是字对齐吗? – Sjoerd 2010-06-15 09:58:09
没有...我只是询问字节对齐。我了解字对齐 – kumar 2010-06-15 10:15:38
你确定它不是“N字节对齐”吗? – 2010-06-15 10:33:06