【发布时间】:2016-12-15 03:11:27
【问题描述】:
所以,首先,我已经查看了几个问题,包括 this one,但似乎都没有帮助。
我只是想写一个使用realloc()扩展数组大小的函数。
我的代码目前如下所示:
unsigned char *xtnd = malloc(4);
xtndc(&xtnd, 4);
// sizeof(*xtnd) should now be 8
void xtndc ( unsigned char ** bytesRef , uint8_t count ) {
*bytesRef = realloc(*bytesRef, (sizeof(**bytesRef)) + count);
}
但无论我做什么,xtnd 的大小似乎始终为 4。在其上运行 xtndc() 后,它现在应该是 8 个字节长。
有什么建议吗?
【问题讨论】:
-
sizeof没有给出数组的大小,只给出了指针本身。 -
@MichaelAlbers 这就是我取消引用它的原因?当我做
sizeof(**bytesRef)时,我取消引用取消引用的指针,对吗?我对 C 有点陌生,所以如果这不正确,请告诉我 -
不,不是它是如何工作的。阅读:en.cppreference.com/w/c/language/sizeof
-
您对
sizeof运算符有什么了解?如果 as 指针是一个数组,它会被称为“数组”,而不是“指针” -
@Olaf 同样,我对 C 有点陌生。我的印象是,如果我将指针取消引用回到它的对象,我可以
sizeof()对象。现在我正在阅读sizeof()(感谢@MichaelAlbers),我发现它不是这样使用的。谢谢大家的帮助!