2017-04-26 4 views
0

リンクリストのメモリがどのように割り当てられているかを理解しようとしていたので、アドレスが格納されている場所を確認するための簡単なプログラムを作成しました。リンクリストの基本メモリ(C言語)

#include <stdio.h> 

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

int main() 
{ 

    struct node first; 
    struct node second; 
    struct node third; 
    struct node *aux; //pointer to go through list 

    first.data = 1; 
    second.data = 2; 
    third.data = 3; 

    first.next = &second; 
    second.next = &third; 
    third.next = NULL; 
    aux = &first; 

    while (aux) 
    { 
     printf("%p\n", aux); //printing each address 
     aux = aux->next; 
    } 

    return 0; 
} 

そして、我々は出力を得る:

0x7fff14fabac0 
0x7fff14fabad0 
0x7fff14fabae0 

だから、ノード間の1つのバイトの違いがあります。

基本的に最初の= 2番目 - 1. sizeof(int)は4バイトに等しいので、整数のために残されたメモリにはどのようにスペースがありますか?

+2

16バイトです。 – BLUEPIXY

+0

それはそれをクリアします。ありがとうございました! – Calin

答えて

1

最後の桁を無視していますが、その差は16バイトです。 16バイトはシステムの8バイトの位置合わせの結果である可能性が最も高いです。

関連する問題