很棒的网站..我的程序中有这个错误,它发生在我 free() 我 sturct 指针类型.. 似乎无法理解为什么.. 但我认为这与指针是全局声明的事实有关。谢谢您的帮助!
*注意 "prev","current" 和 "head" 是全局的,并使用 malloc() 在另一个函数中分配;
编码:
void approve_delete(int* delete_request){
if(*delete_request == 0){
cout<<" there are no more delet requests\n";
return;
}
char choice[5];
char ch;
current = head;
Prev = head;
while (current->user.id != MAX_ID ){
if(current->user.want_delete == true){
cout<<"name : "<<current->user.name<<" "<<current->user.last_name<<" id: "<<current->user.id<<endl;
ch=0;
while( ch != 'y' && ch != 'Y' && ch != 'n' && ch != 'N') {
cout<<"approve delete? Y/N or (Q)exit\n";
cin.width(5);
cin>>choice;
ch=choice[0];
switch (ch) {
case 'y':
case 'Y':
item* Temp = current;
Prev->next = Prev-> next->next;
current=Prev->next;
free(Temp); //here the error occur!
cout<<"in";
*delete_request -= 1;
cout<<"student deleted\n";
break;
case 'n':
case 'N':
break;
case 'q':
case 'Q':
return;
}
}
}
Prev = current;
current = current->next;
}
}