提问人:Rishabh Chatterjee 提问时间:11/14/2023 更新时间:11/14/2023 访问量:12
链表节点创建和非法内存访问
Linked List Node Creation and illegal memory access
问:
在C语言中,当我想创建节点时,在链表中,我写struct node newnode = (struct node) malloc(sizeof(struct node));但是在我的大学里,老师说如果我写 结构节点 newnode = (struct node)malloc(sizeof(struct node*));然后我也可以创建一个节点,但我的问题是指针的大小不取决于数据类型,它取决于架构,在 32 位架构中指针需要 4 个字节,在 64 位架构中指针需要 8 个字节。所以,malloc(sizeof(struct node*));这一行的意思是我对 malloc 说你创建了一个节点类型指针的块,即 8 个字节,但在单向链表创建中,在结构体中,我定义了一个整数变量,它在 4 位架构中占用 64 个字节,以及一个结构节点的指针,即它指向自己。所以结构变量的大小是 4+8=12 字节。那么我怎样才能将数据和地址也保存在 8 个字节中,这实际上需要 12 个字节的内存。是非法内存访问吗?请给出合适的答案
我期待一个正确的答案和很好的解释。
答: 暂无答案
评论