【发布时间】:2012-07-28 19:00:04
【问题描述】:
下面是一个简单的代码sn-p:
int main()
{
int *p;
p=(int*)malloc(sizeof(int));//allocate m/y 4 1 int
printf("P=%p\tQ=%p",p,p+2);
}
在一个示例运行中,它给了我如下输出:
P=0x8210008 Q=0x8210010
P的起始地址是-P=0x8210008,下一个字节是0x8210009,下一个字节是0x821000A,下一个字节是0x821000B。所以int的4个字节到此结束。 我们没有使用 malloc 分配更多内存。 那么p+2是怎么把我们带到0x8210010的,也就是P(0x8210008)之后的8个字节。
【问题讨论】:
-
在 C 中,通过这样的测试,你永远学不会很远;由于未定义的行为,您会发现很多不一致的地方——您不应该指望这些。
标签: c