위대한 사이트 .. 내 프로그램에서이 오류가 발생하며 포인터 유형을 sturct 할 때 발생합니다. 이유는 이해할 수 있지만 .. 포인터가 전역 적으로 선언된다는 사실과 관련이 있다고 생각하십시오. 도움을 주셔서 감사합니다.힙 손상 감지 : 정상 차단 후 (# 143)
* "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;
}
}
디버깅 해 보셨습니까? –
예, 런타임 오류입니다. 그리고 힙 버퍼의 끝 후에 메모리에 쓰려고하는 메시지가 표시됩니다. –
결론은 무엇입니까? – Devolus