gpt4 book ai didi

C 将 void * 转换为 type_t

转载 作者:行者123 更新时间:2023-11-30 15:30:09 28 4
gpt4 key购买 nike

我有以下来自一本面向对象编程 C 书籍的代码:

{
struct Set { int count; };

struct Set * set = malloc(sizeof(struct Set));
void * p = set;

const size_t size = * (const size_t *) p;
}

我无法理解最后一行是如何以及为什么起作用的。 size_t sizesize_t 类型指针的解引用值。 type_t 类型的指针是从 void* p 转换而来的。当我将 void* 转换为 type_t* 时发生了什么,我在书籍或在线教程中找不到任何信息。有人可以向我解释一下或者向我推荐一个好的教程吗?

最佳答案

所以这里发生的事情如下:您有一个指向结构体的指针 (p),并将其转换为 const size_t * 指针,并使用该值结果。据说该值应该与 p->count 的值相同,但不要真正指望这一点。根据Can I trust sizeof(size_t) <= sizeof(unsigned long int) is always true? intsize_t 不得具有相同的大小,因此您很可能最终会访问不属于您的内存。

关于C 将 void * 转换为 type_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25759600/

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