对不起,我的英语。
struct Menu{
int fno;
string fname;
int price;
};
struct Order {
int table;
int fcnt;
Menu *foods;
int *qty;
int ord_price;
bool checked = false;
};
void del_order(Order *ord[], int &pos) {
int table, loc;
cout << "* table(1-10) : "; cin >> table;
for (int i = 0; i < pos; i++) {
if (ord[i]->table == table) {
if ((ord[i]->checked)) {
cout << "cannot delete.\n";
return;
}
loc = i;
delete ord[i]->foods; <---- this errors!!.
delete ord[i]->qty;
}
}
delete ord[loc];
pos--;
for (int i = loc; i < pos; i++)
ord[i] = ord[i + 1];
}
删除ord [i]-> foods ;我认为这导致了msg错误。 错误的内容如附件img中所示。 我在做什么错了?
答案 0 :(得分:1)
您没有显示足够的代码,但是几乎可以肯定Order::foods
是通过 array-new (operator new[]
)获取的指针,或者它从未分配但不是-NULL(悬空/未初始化)。
您必须始终正确匹配新呼叫/删除呼叫:
如果您分配了new
,然后释放了delete
:例如
Menu *m = new Menu;
delete m;
如果您分配了new[]
,然后释放了delete[]
:例如
Menu *m = new Menu[10];
delete[] m;