【问题标题】:C++ delete an item from pointers arrayC ++从指针数组中删除一个项目
【发布时间】:2014-01-16 01:59:45
【问题描述】:

我正在创建一个指针数组,然后尝试以这种方式删除其中一个项目:

sf::Rect<float>* Rects2[] ={new sf::Rect<float>(0,0,WIDTH,1), (sf::Rect<float>*)&_invader.getBoundingRect() };
    delete Rects2[1];

当我运行代码时,我得到一个调试断言失败,“_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)”

我尝试使用delete &amp;Rects2[1]; 删除元素,但没有成功

当我尝试删除第一项 - delete Rects2[0]; 时,我得到了一次错误,然后一切正常。

【问题讨论】:

  • אתה לא משתמש בפקודה בצורה נכונה נסיך של אבא

标签: c++ arrays pointers sfml delete-operator


【解决方案1】:

您的第二个数组元素不是由您分配的,因此您不应尝试取消分配它(除非库文档如此说明)。

至于其他尝试,当然你只能取消分配一次。

【讨论】:

  • 第二个元素由我创建的类分配。它只是返回一个 sf::Rect。关于第一个元素 - 只调用一次的删除。我运行代码 4 次,只有第一次出现此错误,之后就正常了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 2022-06-11
相关资源
最近更新 更多