簡體   English   中英

C語言中結構的指針大小

[英]Sizeof pointer in structure in C

我有這樣的結構:

struct node{
    int key;
    int data;
    struct node *next;
};

然后我創建了link

struct node *link = (struct node*) malloc(sizeof(struct node));
link->key = 10;
link->data = 100;
link->next = link;

當我想找出每個元素的大小時,我會做:

printf("%zd %zd %zd %zd\n", sizeof(link->key), sizeof(link->data), sizeof(link->next), sizeof(link));

作為輸出,我有:

4 4 8 8

所以,第一個問題是為什么sizeof(link)不包含sizeof(link->next)

第二個問題是:當我嘗試free分配給link內存時:

printf("Size of link is %zd\n", sizeof(link));
free(link);
printf("Now size of link is %zd\n", sizeof(link));

我有:

Size of link is 8
Now size of link is 8

為什么沒有釋放內存?

所以,第一個問題是為什么sizeof(link)不包含sizeof(link->next)

因為link是指針。 如果打印sizeof(*link) ,則會得到一個不同的number

為什么沒有釋放內存?

釋放內存確實會發生。 只是無法用您嘗試的方式(即sizeof對其進行度量。 無論指針指向有效對象還是無效對象,大小均保持不變。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM