힙 에러 발생지는 59번줄 ,88번 줄의 free함수 때문이고 두 부분의 이유는 동일합니다.
void enqueue(Queue* queue, int data) {
Node* newnode = (Node*)malloc(sizeof(Node*));
새로운 Node를 선언 할 때 sizeof(Node*) 의 경우 struct Node의 크기가 아니라 struct Node 주소(포인터)의 크기를 담는 포인터 변수 이기 때문에
정상적인 struct Node의 크기가 담기지 않습니다.
따라서 올바른 방법은 Node* newnode = (Node*)malloc(sizeof(Node)); 입니다.
실제로 크기를 확인하면 sizeof(Node*) = 4(byte) <---> sizeof(Node) = 8(byte) 가 나오게 됩니다. (TMI : 모든 변수들의 포인터 변수 크기(byte)는 같습니다. ex : *int,*double,*char ... )
kksshh0612 3년 전
c로 짠 코드인데 힙 충돌이 탐지되었다고 오류메세지가 뜨는데, 뭐가 틀린건지 모르겠습니다