さまざまなケースを試してCでリンクリストを覚えようとしていますが、質問があります。私はこのコードを書いており、動的に割り当てられたメモリを解放する正しい方法がわからない。ちょうど自由(S);または私は無料で書く必要がありますか?同様に、これらの2つのコマンドの順序は重要ですか?また、それ以外は、このコードは正しく書かれていますか?あなたが気にしないならば、私は完全な説明をしたい、私は5年間何もコード化していない。リンクリストの使用中にCで動的に割り当てられたメモリを解放する
#include <stdlib.h>
#include <stdio.h>
typedef char StackType;
typedef struct StackNodeTag
{StackType T;
struct StackNodeTag *Link;
} StackNode;
typedef struct StackTag
{struct StackNodeTag *Top;
} Stack;
typedef Stack *StackPointer;
int main (void)
{StackPointer S;
S = malloc (sizeof (Stack));
S->Top = malloc (sizeof (StackNode));
S->Top->T = 'c';
S->Top->Link = NULL;
free (S->Top);
free (S);
return 0;
}
へのアクセス方法を変更しますと、細かい音が鳴ります。最初に 'S'を解放すると、' S-> Top'が無効になる可能性があるので、問題を発注してください。 –