반응형
#include <stdio.h>
#include <stdlib.h>
typedef struct _person {
char name[20];
int age;
struct _person * next;
}Person;
int main(void) {
Person * current = NULL;
Person * first = NULL;
Person * last = NULL;
int input = 1;
int i = 1;
while (1) {
printf("회원을 추가하시겠습니까? [0 : 아니오 / 1 : 네]: ");
scanf("%d", &input);
if (input == 0) {
break;
}
Person * current = (Person*)calloc(1, sizeof(Person));
// Person * current = (Person*)malloc(sizeof(Person));
/*
처음에 난 위에꺼로 했다가 안되는 이유를 알아보니
메모리 할당된 부분에 쓰레기 값이 들어가서 NULL이 안먹힌것
Person * current = (Person*)malloc(sizeof(Person));
current->next = NULL;
이렇게 적어주는 방법도 있었다.... 왜 지금 생각이..
*/
printf("%d번째 회원의 이름을 입력해주세요 : ", i);
scanf("%s", current->name);
printf("%d번째 회원의 나이를 입력해주세요 : ", i);
scanf("%d", ¤t->age);
if (first == NULL) {
first = current;
}
else {
last->next = current;
}
last = current;
i++;
}
printf("\n== 전체 회원 리스트 ==\n");
current = first;
i = 1;
while (1) {
printf("%d 번째 회원 : [%s, %d세]\n", i, current->name, current->age);
if (current->next == NULL) {
break;
}
current = current->next;
i++;
}
printf("\n== 메모리 반납 ==\n");
current = first;
i = 1;
while (1) {
printf("%d 번째 회원의 메모리를 반납합니다.\n", i);
free(current);
if (current->next == NULL) {
printf("존재하는 메모리가 없습니다.");
break;
}
current = current->next;
i++;
}
return 0;
}
도움을 받아, 해결했다.
https://blog.naver.com/errorsoft666/221875718137
[C언어] C언어 메모리 동적 할당 및 초기화 :: calloc(), memset()
포인터 변수의 값에 메모리를 할당해 주는 함수로 malloc() 이라는 함수가 있었습니다. 하지만 이 malloc()...
blog.naver.com
이 사람 블로그에 설명이 잘 적혀있다, 보고 해결하면된다.
반응형