gpt4 book ai didi

c - 将 void 指针分配给自身

转载 作者:太空狗 更新时间:2023-10-29 15:37:25 25 4
gpt4 key购买 nike

最近我遇到了一个奇怪的代码片段。它是用 C 编写的内存池代码的一部分,它(当然)大量使用地址算法。

省略多余的细节,我添加了一些评论而不是它们:

void *head;
/* some memory allocation stuff, including assigning allocated memory address to head */

/* allocating some memory pages */

/* OK, now allocation stuff is finished. head pointer still contains valid address */

head = *(void **)head;

什么是head = *(void **)head;?我们将 head 分配给自己?为什么?为了什么?我将这一行理解为 “我们将 head 视为指向 void 指针的指针,即 void 指针的地址。然后我们取消引用它,因此接下来我们将获得指向 void 的指针。接下来将此指针分配给 head (转向它自己 ??)”

显然,我错了,因为它是成功运行的生产代码示例。但这对我来说没有任何意义。伙计们,这是什么把戏?

附言不幸的是,由于 NDA,我无法粘贴完整的代码段。但是那里已经没有什么特别的了。

最佳答案

head = *(void**)head;head 指向的指针 (void*) 分配给 head 本身。

关于c - 将 void 指针分配给自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53034960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com