gpt4 book ai didi

c - C 中结构体指针的大小是多少?

转载 作者:行者123 更新时间:2023-11-30 20:17:01 27 4
gpt4 key购买 nike

如果结构体指针的大小为 4 或 8 字节,它如何在动态内存分配中为其数据成员正确分配所需的内存。这是我的代码:

#include<stdio.h>
typedef struct node{
char a[10];
char b[10];
char c[10];
int f;
struct node* next;
}node;

int main()
{
node* temp;
int d= sizeof(node *);
printf("Size of structure pointer = %d",d);
temp= (node*)malloc(sizeof(node*));
int c = sizeof(temp);
printf("Size of Temp = %d\n",c);
}
```````````````````
/*
Here both Temp and node* is having a size of 8 bytes.
But the size of the structure 'node' is 38 bytes(total size of the members).
So how can the pointer Temp allocate that much memory if its size is just 8 bytes ?
*/

最佳答案

因为你不将数据存储在指针中。指针指向分配在其他地方的数据,因此称为“指针”。 sizeof(node*) 是错误的,与指针本身的大小无关。

你应该这样做

temp = malloc(sizeof *temp); // equivalent of sizeof(Node)
...
free(temp);

关于c - C 中结构体指针的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58909900/

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