リストでスタックを再現しているのですが
topがリストの先頭を指しています。
c
1int pop(){ 2 Node node; 3 4 if (top == NULL) 5 return -1; 6 node = *top; 7 free(top); 8 top = node.next; 9 return node.value; 10 } 11
このコードを自分なりに読むとnodeにtopの指すアドレスのコピーをしてる
次に、free(top)でtopの指す領域の開放している
ここで、気になったのがnodeがさしている領域はもう消されてるためアクセスできないと思うのですがtop = node.next;、node.valueのようにアクセスしている。
のがおかしいと思うのですが教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/05 02:39