【发布时间】:2014-04-06 20:40:25
【问题描述】:
在 C 中,如果我运行 malloc(1) 两次,然后打印出转换为 uintptr_t 的两个值,则这些值相差 32。例如,
void * last = malloc(1);
void * next = malloc(1);
printf("orig %lu\n", ((uintptr_t)last));
printf("next %lu\n", ((uintptr_t)next));
打印出来
orig 30572560
next 30572592
malloc(size_t size) 根据this 分配大小字节。当我malloc 一个字节,然后是另一个字节时,我希望该值增加 8。为什么它们相差 32?谢谢!
【问题讨论】:
-
不是 ans 而是使用
%p打印指针。 -
我想要十进制表示,而不是十六进制,这就是为什么我没有使用 %p