Home
Justnote
Cancel

Dangling pointer(댕글링 포인터)

Description 해제된 메모리 영역을 가리키고 있는 포인터 char *ptr1 = (char *)malloc(sizeof(char)); ... free(ptr1); 위의 ptr1이 가리키는 메모리 영역은 free함수로 해제됐지만 ptr1은 여전히 해당 영역을 가리킨다.(변수가 삭제되지 않았기 때문) Problem 예측 불가능한 동작 ...

메모리 구조

메모리 공간의 구분 코드(code) 영역 데이터(data) 영역 스택(stack) 영역 힙(heap) 영역 *Heap과 Stack의 데이터 저장 방향은 운영체제 따라 다르다고 함. 메모리 해제 Data 영역: 프로세스가 종료되면 소멸함 Stack 영역: 함수 종료 시 제거됨 Heap 영역: 개발자가 직접 free !! ...

Memory leak(메모리 누수)

free(buf) 와 buf = 0 의 차이? free(buf) : 할당받은 메모리를 해제 buf = 0 : 할당받은 메모리 주소를 담고있는 buf 변수가 0 값을 갖게 됨 → memory leak!

컴파일의 4단계

전처리 주석제거 헤더 파일 삽입 매크로 치환 및 적용 컴파일 언어의 문법 검사 static 영역(Data, BSS 영역)의 메모리 할당 어셈블리 어셈블러를 통해 어셈블리어 파일을 오브젝트 파일로 변환 링킹 링커를 통해 오브젝트 파일과 라이브러리를 묶어서 실행파일 생성 Ref. https://bradbury.tistory.com...

0, ‘\0’, NULL 차이점

의미 char null_1 = '\0'; char null_2 = 0; char null_3 = (char)NULL; 3개 모두 결과는 동일하지만 해석방식의 차이가 있음. null_1 : \0의 아스키 값인 0이 저장됨 null_2 : 0이 바로 저장됨 null_3 : NULL은 헤더파일에 (void *)0으로 저장되어 있음.→ 0이 저장됨...

배열과 포인터를 활용한 다양한 표현

char arr[3] = {'a','b','c'}; 배열 요소 arr[0] : a arr[1] : b 주소값 &arr[0] : 0x7ffd209e6cb9 &arr[0]+1 : 0x7ffe523d59ca 포인터 요소 *arr : a (arr+1) : b *(&arr[0]+1) : b 주소값 arr : 0x7...

Get Next Line ③ 방향 탐색

구현 방법 간략한 방법 ‘\n’가 포함된 버퍼까지 읽는다. ‘\n’의 뒷부분 저장 계속 읽는다. EOF가 나오면 중단 해결방향 포인터로 해결이 가능한 mandatory 파트와 달리 추가적인 fd를 고려해야 하는 bonus 파트의 경우 해결방법이 둘로 나뉜다. 포인터 배열을 활용한 풀이 (주로 OPEN_MAX) 가변크기...

Get Next Line ② 배경 지식

과제를 위한 배경 지식 static 변수 메모리의 데이터 영역에 저장된다. 프로그램이 종료될 때까지 유지된다. 파일 디스크립터(fd) 특정한 파일에 접근하기 위한 추상적인 키 0,1,2는 표준 POSIX 파일 서술자로 각각 표준입력, 표준출력, 표준에러를 의미한다. ...

Get Next Line ① Subject

Summary 이 프로젝트는 파일 디스크립터에서 읽은 행을 반환하는 함수를 프로그래밍하는 것입니다. Common Instructions 당신의 프로젝트는 C로 작성되어야 합니다. 당신의 프로젝트는 Norm 따라 작성되어야 합니다. 보너스 파일/함수가 있으면 norm 검사에 포함되며 내부에 norm 오류가 있으면 0점을 받게 됩니다. ...

Libft ⑤ Bonus part

Synopsis typedef struct s_list { void *content; struct s_list *next; } t_list; content: 노드에 들어있는 데이터(void형이라 다 가능함) next: 다음 노드의 주소 or NULL(마지막 노드면) 멤버 연산자 개념 (. 대신 -> 통해 ...