본문 바로가기

학교 수업/컴프 34

실습 12주차 segmentation fault 이번 실습의 문제는 struct를 활용한 linked list 구현하기였다.계속해서 나타나는 segmentation fault. 이유가 뭘까#include #include #include #include struct node { int value; struct node *next;};void print_linked_list(struct node *ptr) { if (ptr==NULL) return; printf("%d\n",ptr->value); print_linked_list(ptr->next);}void free_nodes(struct node *ptr) { if (ptr==NULL) return; free_nodes(ptr->next); free(ptr);.. 2025. 5. 29.
malloc(): corrupted top size 과제 하던 중에 나타난 malloc(): corrupted top size 에러무슨 에러인고 찾아보니 malloc으로 할당한 동적메모리를 벗어나 메모리를 깨먹어버리는 경우 나타난다고 한다. 쉽게 생각하면 동적메모리의 배열의 인덱스 범위 바깥으로 나가는 경우.정확히는 "C 또는 C++에서 동적 메모리 할당을 사용할 때, 힙(Heap) 메모리가 손상되었을 때 발생합니다.(by ChatGPT)" 라고 한다.에러 발생 코드그럼 어디서 생긴 문제인가 곰곰이 들여다보니 merge sort를 구현하다가 생긴 문제였다.void merge(struct person array[], int left, int mid, int right) { int i, j, k, l; i = left; j = mid+1; .. 2025. 5. 24.
C에서 math.h 사용할 때 주의할 점 여기 참고"" sqrt() 함수를 사용하기 위해서는 컴파일 시 -lm 옵션을 사용하여 수학 라이브러리를 링크해야 한다 (일부 컴파일러 및 환경에서 필요). 예를 들어, gcc 컴파일러를 사용하는 경우, 컴파일 명령은 gcc -o program program.c -lm 이런 식으로 됨. ""-lm 을 붙이지 않으면?>> 당연히 오류calculate_distance 함수에서 pow, sqrt 함수 모두 잘 안 돌아간다. 이때 뒤에 -lm 을 붙이면 해결이 된다.float calculate_distance(struct point p1, struct point p2) { int x1, x2, y1, y2; x1 = p1.xpos; y1 = p1.ypos; x2 = p2.xpos; .. 2025. 5. 22.
2주차 실습 - 반복문 조건문 보호되어 있는 글 입니다. 2025. 3. 16.