본문 바로가기

전체 글76

메모리(RAM) 구조 작성한 프로그램이 컴퓨터에서 어떻게 동작하는지 이해하려면 메모리 구조에 대해 이해할 필요가 있다. 프로그램이 실행되는 과정을 메모리 구조와 함께 정리한다. RAM과 ROM 본문에서 이야기하는 메모리는 RAM을 의미한다. RAM과 ROM의 차이를 간단히 정리하자면 다음과 같다. RAM은 자유롭게 읽고 쓸 수 있는 기억장치로, RWM(Read Write Memory)라고 부르기도 한다. 또한 RAM에는 현재 사용 중인 프로그램이나 데이터가 저장되어 있다. 시스템의 전원이 꺼지면 기억된 내용이 모두 사라지는 휘발성 메모리의 특징을 가진다. 일반적으로 주기억장치 또는 메모리라고 불린다. ROM은 기억된 내용을 읽을 수만 있는 기억장치로서 일반적으로 쓰기가 불가능하다. 또한 시스템의 전원이 꺼져도 기억된 내용이 .. 2020. 12. 28.
c언어 정적변수, 지역변수, 전역변수 비교 (static, local, global) 함수 내에서 사용하는 변수로서 지역변수, 전역변수, 정적변수의 차이를 알아본다. [전체 요약] ☑️ 지역변수(local variable, 자동변수)는 중괄호 내부, 함수의 매개변수(Parameter)에서 사용되는 변수를 의미한다. 지역변수의 지역은 함수의 내부, 중괄호 내부를 의미한다. 따라서 함수 안에서만 접근 가능하며, 함수를 벗어나면 사라진다 (= 변수의 메모리 공간이 소멸된다). 지역변수는 초기화하지 않으면 컴파일 에러가 나거나 쓰레기값이 저장된다. 더보기 지역변수(local variable)는 자동변수(auto variable)와 같다. 자동변수는 흔히 블록(중괄호) 안에서 사용하는 변수로서, 변수가 생성된 뒤에 자동으로 사라진다고 하여 자동변수라고 부른다. 매우 흔히 사용하기 때문에 auto .. 2020. 12. 25.
[42Seoul] Libft 과제 - 함수 ft_lstnew와 ft_lstadd_front의 차이 이해하기 prefix로 lst가 붙은 ft함수들은 연결리스트 관련 함수들이다. 연결 리스트는 노드들의 집합이므로 실제로는 노드의 구조체만 정의하면 된다. 따라서 과제에서는 헤더에 아래와 같이 노드의 구조체를 정의하도록 안내된다. typedef structs_list { void*content; struct s_list*next; }t_list; 구조체 노드로 정의한 연결리스트를 나중에 이중포인터로 받아오는데, 처음에는 이해가 되지 않아 확실하게 정리한다. 먼저 ft_lstnew의 함수 코드는 아래와 같다. ft_lstnew를 이용하여 새 노드를 만들 수 있다. #include "libft.h" t_list *ft_lstnew(void *content) { t_list *new; new = (t_list *)mal.. 2020. 10. 15.
파일 디스크립터(File Descriptor)란? 파일 디스크립터 (FD, File Descriptor)란, Unix OS에서 네트워크 소켓과 같은 파일이나 기타 입력/출력 리소스에 액세스하는 데 사용되는 추상표현이다. 즉, 시스템으로 부터 할당받은 파일이나 소켓을 대표하는 정수다. 파일 디스크립터는 음이 아닌 정수(Non-negative Integer)로, 일반적으로 형식 int로 C 프로그래밍 언어로 표현된다(음수 값은 "무값" 또는 오류 조건을 나타내기 위해 예약된다). (Window에서는 file handle이라고 부르고 값은 랜덤하게 할당된다.) FD의 0번에서 2번까지는 고정되어 있다. (unistd.h 헤더파일에 명시) 각 Unix 프로세스는 세 가지 standard streams에 해당하는 고정된 standard POSIX file des.. 2020. 10. 13.
[C언어] 내장함수 비교 - memcpy, memccpy / memmove / memchr / memcmp #include 에 있는 메모리 관련 함수를 정리한다. 레퍼런스는 man 가이드다. memcpy와 memccpy 비교 메모리 영역을 복사하는 함수다. PROTOTYPE #include void *memcpy (void *restrict dst, const void *restrict src, size_t n); #include void *memccpy (void *restrict dst, const void *restrict src, int c, size_t n); NAME copy memory area copy string until character found DESCRIPTION The memcpy() function copies n bytes from memory area src to memory .. 2020. 10. 8.