목록전체 글 (90)
Love Every Moment
1. leaks 명령어 (1) 파일 실행 중에 검사하기 main 문 안에 while 문을 사용하는 등의방법을 써서 프로그램이 종료되지 않도록 하고 컴파일 후에 ./a.out 으로 파일을 실행시키고 leaks a.out ※ 해당 방법으로 메모리 누수가 뜨지 않는 경우가 있어서 (2)번 방법을 추천 (2) 프로그램 내부에 leaks 명령어 삽입 main 문 안에 직접 삽입했기 때문에 프로그램이 종료되기 전에 검사 가능 system 명령어를 통해 쉘 명령어를 main 문 안에서도 사용할 수 있다. system("leaks a.out > leaks_result_temp; cat leaks_result_temp | grep leaked && rm -rf leaks_result_temp"); #include #in..
1. Makefile 이란? Make: 주어진 쉘 명령어들을 조건에 맞게 실행하는 프로그램 Makefile: 어떤 조건으로 명령어를 실행할지 담은 파일 Incremental build: 반복적인 빌드 과정에서 변경된 소스코드에 의존성(Dependency)이 있는 대상들만 다시 빌드 예: main.c의 한 줄만 바꾸고 다시 빌드한다면 main.o 컴파일(gcc -c -o main.o main.c)과 a.out링크(gcc -o a.out main.o foo.o bar.o)만 수행 2. 소스 코드에서 프로그램 빌드하기 (1) 컴파일(Compile) 소스 코드를 컴퓨터가 이해할 수 있는 어셈블리어로 변환하는 과정 -c 옵션: 링크를 하지 않고 컴파일해서 목적 파일(Object File)을 생성하라는 의미 -o ..
1. 파일 디스크립터 리눅스 운영 체계에서 파일에 대한 정보를 기술하고 유지하는 기억 장치의 영역 리눅스는 물리적 장치들을 일종의 파일로 관리 특히 리눅스 쉘은 작업에 필요한 파일들을 일종의 번호를 붙여서 관리 파일 디스크립터 FD 대신 사용하는 이름 목적 0 stdin 표준 입력 1 stdout 표준 출력 2 stderr 표준 에러 2. 최대 파일 디스크립터 터미널에 ulimit -a 명령어를 치면 한번에 열 수 있는 최대한의 파일 개수를 알 수 있다. 현재 사용 중인 맥os 에서는 파일 디스크립터 256 까지 열 수 있다. 3. 파일 디스크립터가 부여되는 방식 파일 디스크립터는 표준 입력, 표준 출력, 표준 에러인 0 부터 2까지를 제외하면 open() 함수로 파일을 열어서 3 부터 번호를 부여하게 ..
1. 댕글링 포인터란 malloc() 함수를 이용하여 동적 메모리를 할당한 후에는 free() 함수를 통해 할당된 메모리를 해제한다. 하지만 포인터가 여전히 해제된 메모리 영역을 가리키고 있을 때에 문제가 될 수 있다.이것을 댕글링 포인터라고 부른다. 2. 문제점 메모리 접근시 예측 불가능한 동작을 일으킬 수 있다. 메모리 접근 불가 시 Segmentation fault 가 발생한다. 잠재적인 보안 위험이 있을 수 있다. 3. 예제 int *ptr; ptr = (int *)malloc(sizeof(int)); *ptr = 1; printf("%d\n", *ptr); free(ptr); *ptr = 2; 처음에 *ptr 을 1 로 출력하고 나서 메모리를 해제해주었는데 ptr 은 여전히 처음 할당된 메모리 ..
1. 변수의 종류 (1) 지역 변수(Local Variable) 프로그램 내의 변수가 선언된 함수에서만 사용 가능한 변수 함수가 시작할 때에 메모리가 할당되고 함수가 끝날 때에 메모리가 해제됨 스택 영역에 저장되며 함수가 끝나면 자동 삭제됨 따라서 함수 실행이 끝나면 변수에 저장된 값은 사라짐 (2) 전역 변수(Global Variable) 함수 밖에서 선언되어 주어진 프로그램 내의 어느 함수에서나 사용 가능한 변수 프로그램이 시작할 때에 메모리가 할당되고 프로그램이 끝날 때에 메모리가 해제됨 컴파일 시간에 데이터 영역에 메모리를 할당하여 저장되며 프로그램이 끝나면 자동 삭제됨 따라서 프로그램이 끝날 때까지 변수 안의 값이 유지됨 (3) 정적 변수(Static Variable) 지역 변수의 특성과 전역 ..
컴퓨터 프로그래밍 코딩 교육컴퓨터 프로그래밍 코딩 교육 깃허브에 잔디도 심을겸 공부하면서 배운 내용들을 마크다운 문서로 업로드하려고 한다. 처음 레포지토리 생성할 때에 README.md 를 수정해본 이후로는 한번도 마크다운 문서를 작성해본 적이 없었다. 그래서 앞으로 학습 내용 정리시에 편리하게 참고하고자 간단한 마크다운 문법을 정리해보았다. 컴퓨터 프로그래밍 코딩 교육 1. 제목(Header) (1) 문서 제목 : 큰 제목 This is an H1. ============ (2) 문서 부제목: 작은 제목 This is an H2. =========== (3) 글머리: H1 부터 H6 까지만 지원 # This is an H1 ## This is an H2 ### This is an H3 #### This..