c语言 - 将 sbrk 的结果分配给指针时的对齐问题 - K&R



引用了Kernighan和Ritchie的代码(第2版第188页(,

static Header* morecore(unsigned nu) {
    char *cp, *sbrk(int);
    Header* up;
    if (nu < NALLOC) 
        nu = NALLOC;
    cp = sbrk(nu * sizeof(Header));
    if (cp == (char*) -1) /* No space at all */
        return NULL;
    up = (Header*) cp;
    up->s.size = nu;
    free((void*)(up+1));
    return freep;
}

这里的问题是,当 sbrk 返回的值类似于 101 时会发生什么,当在行中完成对up的指针分配时,对齐将无效up = (Header*)cp;

这可能有一个非常明显的答案,如果我错过了,很抱歉!

根据此页面,我不能说其权威性:

未指定 sbrk(( 返回的指针是否出于任何目的正确对齐。

所以基本上,是的,你可能会发现存在对齐问题。

相关内容

  • 没有找到相关文章

最新更新