C中重新分配的问题

时间:2014-08-29 19:03:30

标签: c realloc

我正在努力与realloc ...

strucType mkBggr (structType x, char ch) { 
    x = realloc(x, 100);
    printf("%d", sizeof(x));
}

我认为这应该打印出值100,但它会打印8。

它显然与指针有关,但我不知道是什么。我在x的前面添加了* s和& s,但我似乎无法得到它。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

Realloc返回一个指针,因此x是指针类型。 sizeof(x)返回指针的大小,在此环境中为8个字节。

答案 1 :(得分:0)

它打印值8,因为您要求指针(x)的大小。您无法打印已分配内存块的大小 - 您必须自己跟踪它。

这就是为什么我不推荐使用realloc;我看到的所有人都在问它是错误的。