いくつかのコードをテストする際にひどいエラーに遭遇しました。free(p_current_item->s)
これは、リンクリスト内のノードであるwhereを呼び出したことが原因p_current_item
であり、sはそれに含まれるchar*であることがわかりました。リストに要素を追加するだけのメソッドaddItem(node、char *)を呼び出してノードを作成しました。p_head=addItem(p_head,"this gets added");
気になるのは、次のとおりです。
1)要素に含まれている文字列を解放する必要があるのはなぜですか。sが(私のクラスの例で行われた方法である)として宣言されるときに必要であることは知っていますchar* s = snprintf(s,(size_t),30,"this gets added");
が、なぜそれが必要なのですか?構造体(この場合はlinkedListノード)に含まれる属性を解放することが可能ですか?構造体自体が解放されますか?
2)明示的に宣言されたsの値を解放しようとしたときに何が起こっていたか
3)他の方法でsの値を解放する必要がありますか?
ありがとう :-)