私の構造体の設定に割り当てられたすべてのメモリを解放する必要があります。私はセクションを追加したい場合は、私はこの私の構造体を解放する方法を見つけることができません
struct section * sect = malloc(sizeof(struct section) * 255);
struct keysnvalues * keysnvalue = malloc(sizeof(struct keysnvalues) * 255);
は、私が最初の1
sect[++num_section].name = buffer; // buffer is the name
と次のセクションで
のためにこれを行うのですコードのbegginingでstruct keysnvalues {
char* key;
char* value;
};
struct section {
char *name;
struct keysnvalues *keysnvalues;
int keysnvalues_ammount;
};
struct config {
struct section *sections;
int section_ammount;
};
sect[num_section].keysnvalues = keysnvalue;
sect[num_section].keysnvalues_ammount = num_keysnvalues;
cfg -> section_ammount++;
//start with new keysnvalue
num_keysnvalues = 0;
keysnvalue = malloc(sizeof(struct keysnvalues) * 255);
sect[++num_section].name = buffer;
sect[num_section].keysnvalues = 0;
私はこれはおそらく愚かな質問であることを承知していますが、私は可能性がhttps://pastebin.com/pGztJ9k4
:この
keysnvalue[num_keysnvalues].key = key;
keysnvalue[num_keysnvalues++].value = value;
全体のコードはここにあるん私は私で働いているキーとセクションに値を追加します今や何時間も構造全体を解放する方法を理解していない。
本当にありがとうございます。
'free(keysnvalue);'? –
私は、このコードだけではなく、もっと多くのことが起こっていると考えています。何かが私に「鍵」と言う。'value'、' name'も動的であり、ここの* all *の管理は、ここに描かれている単純化よりもはるかに複雑です。それにもかかわらず、[free()のドキュメント](http://en.cppreference.com/w/c/memory/free)は、どのように/いつ使用するのかについての良い洞察を提供します。 – WhozCraig
@WhozCraigしかし、セクション[i] .nameでmallocを呼び出さないと、空き(セクション[i])だけで大丈夫でしょうか? – Martin