これは二重のポインタリンクされたリストの先頭にノードを挿入する機能が2回失敗したのはなぜですか?
void insertBefore(node_t **first)
{
node_t *new = NULL;
new = (node_t *) malloc(sizeof(node_t));
new->next = *first;
*first = new;
free(new);
}
を使用して新しいノードを追加するために私の関数である私は一度それを使用している場合は、すべてが正常に動作するようです。しかし、私がもう一度それを使うと、私のリンクされたリストは台無しです。私は以下の出力イメージを持っています(同じことが、ノードを任意の位置に挿入する私の関数に起こりました)。 コードの特定の部分を入れようとしたので、他の部分で何か間違っていたに違いないと思われる場合は教えてください。 私は何が間違っていましたか?
通常、あなたの 'node_t'構造は複数の要素を持つことになります。あなたのコードには通常、構造内の他のフィールドを初期化するために使用される1つ以上の他の関数パラメータがあります。少なくとも、他のすべてのフィールドが既知の値に初期化されていることを確認する必要があります( '' '' '0''または' 'NULL''はしばしばより良い値が存在しない場合の良い選択ですが、構造体には何が記述されています)。私はMCVE([MCVE])の作成について徹底的な仕事をしたと仮定します。 –
[mallocの戻り値をキャストしない](http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc)変数名として 'new'を使用しているので、C++コンパイラを使用していません。 –