[英]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.