私はヒープ内の労働組合のためのメモリを割り当てていると私は労働組合の要素Id
が900動的オブジェクトを削除する際にエラーが発生しましたか?
がgroupUnion[i]
オブジェクトを削除するために私を助けてくださいときに労働組合のオブジェクトを削除する必要がある場合Id
は900 は、以下の私のコードです。
groupUnion = (SettingsUnion *) malloc(sizeof(SettingsUnion) * (NumAttrs + 1));
if(groupUnion == (SettingsUnion *) NULL)
{
return (FALSE);
}
for (unsigned int i=0; i < NumAttrs; i++)
{
inFile.read(reinterpret_cast<char*>(&groupUnion[i]),sizeof(SettingsUnion));
if(groupUnion[i].Id == 900)
{
free groupUnion[i]; // this is bad how can i delete groupUnion[i] when groupUnion[i].Id == 900
groupUnion[i] = NULL;
}
}
inFile.close()
ありがとうございました!
あなたは既にすべての途中でメモリの作品「割り振り解除」することはできませんメモリ。しかし、私はそれがあなたが望むものであることを非常に疑っています。メモリの割り当てを解除するともうアクセスできなくなり、Id == 900であることが分かりません。あなたは本当に何をしたいですか? – yeputons
[このリンクはこちら](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)どのようにこれを行うことができます。 –
C++でmalloc/freeを使用しないでください。 vector、unique_ptr、make_unique、new/deleteを使用してください。 –