Linked list 에서 메모리 에러가 뜹니다 도와주세요!!!!!

jalhaja63의 이미지

코드는 아래와 같습니다.
개발환경: 비주얼 스튜디오. 언어: C언어

typedef int element;
typedef struct ListNode{
	element			pro_index;
	struct ListNode		*link;
	unsigned int			pageNum;  // 페이지 번호
	int				rameNum; // 프레임 번호
	time_t				time;	  // 해당 프로세스에 해당하는 페이지가 할당될떄의 시간
}ListNode;
 
ListNode *phead = NULL;
 
// 노드 생성
ListNode* create_node(element pro_index, pTable_t table, ListNode *link)
{
	ListNode *new_node;
 
	new_node = (ListNode*)malloc(sizeof(ListNode));
	//new_node->pTable = (ListNode::pTable *)malloc(sizeof(ListNode::pTable));
 
	if(new_node == NULL) 
		fputs("메모리 할당 에러", stderr);
	new_node->pro_index = pro_index;
	new_node->link = link;
 
	new_node->pageNum = table.pageNum;
	new_node->frameNum = table.frameNum;
	new_node->time = table.time;
 
	return (new_node);
}
 
 
// 노드 추가
void insert_node(ListNode **phead, ListNode *prev, ListNode *new_node)
{
 
	if(*phead == NULL){
		new_node->link = NULL;
		*phead = new_node;
	}else if( prev == NULL){
		new_node->link = *phead;
		*phead = new_node;
	}else{
		new_node->link = prev->link;
		prev->link = new_node;
	}
}
 
// 노드 삭제
void remove_node(ListNode **phead, ListNode *prev, ListNode *removed)
{
	if(prev == NULL)
		*phead = removed->link;
	else
		prev->link = removed->link;
 
	free(removed);
}
 
 
// 해당 process index에 해당하는 노드 탐색 후 삭제
void search_Delete(ListNode *head, int pro_index)
{
	ListNode *p = head;
	ListNode *prev = head;
	int check=0;	
 
	while( p != NULL){
 
		if(p->pro_index == pro_index){
 
			while(prev != NULL){
				if(prev->link == p){
					check = TRUE;
					break;
				}else  prev = prev->link;
 
			}
 
			if(check == 0)
				prev = NULL;
		}
		remove_node(&phead, prev, p);
		p = p->link;
	}
}

////////////

노드 생성, 추가되는 다 잘됩니다.
하지만 이상하게 search_Delete(ListNode *head, int pro_index) 함수에서 계속
ListNode *p = head; ListNode *prev = head; 이 두분에서 <메모리를 읽을수 없음> 이라고 에러 메시지가 뜹니다.
오늘 하루 종일 붙잡고 있는데도 도저히 모르겠네요.

에러 메시지 스샷 찍어서 첨부 파일로 올려놨으니 꼭 봐주셨으면 감사하겠습니다...
에러를 어떻게 고쳐야 할지 정말 모르겠습니다.

고수님들 제발좀 도와주세요 ㅠㅠ....

File attachments: 
첨부파일 크기
Image icon 읽을수 없음.PNG54.29 KB
shint의 이미지


//
ListNode *phead = NULL;
전역변수와 함수 인자값에 이름이 똑같습니다.

//
link 가 0x00000 일때. 조건문으로 접근을 막아야 합니다.

//
printf();로 코드에 흐름과 값을 확인해보실 수 있습니다.

확인해주세요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.