我分配在堆工会内存,我需要删除工会的对象时,工会的元素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()
在此先感谢!
你不能“unallocate”中的一个中间一块内存已经全部ocated记忆。不过,我很怀疑这是你想要的东西 - 如果你取消分配一块内存,你不能访问它,所以你可以不知道它是'标识== 900'。你真的想做什么? – yeputons
[此链接说明](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)你如何能做到这一点。 –
不要在C++中使用malloc/free。使用vector,unique_ptr,make_unique,new/delete。 –