2026/07/11 2

malloc의 정렬(alignment)과 힙 오버플로우

들어가기에 앞서 malloc에 대해 짧게 설명하자면, malloc은 힙(heap)이라는 메모리 영역에서 동적으로 메모리를 할당받는 C 표준 라이브러리 함수다.스택 변수와 다르게, 힙 메모리는:프로그램이 런타임에 크기를 결정할 수 있음 (컴파일 타임에 크기가 고정되는 배열과 다름)명시적으로 free()를 호출하기 전까지 계속 살아있음 (함수가 끝나도 사라지지 않음)힙 관리자(heap manager)라는 별도의 소프트웨어가 이 영역을 추적하고 관리함 (OS가 직접 관리하는 게 아니라, CRT/힙 라이브러리가 OS로부터 큰 덩어리를 받아와서 잘게 쪼개 나눠주는 방식)라느 특징을 가진다.malloc 내부 구조malloc(12)를 호출하면 힙 관리자는 단순히 "12바이트를 뚝 떼어서 준다"가 아니라, 그 블록을 ..

공부 2026.07.11

strlen, strcpy, strcmp / memcpy, memcmp 구현

strlensize_t strlen(const char* str);인자: str — 길이를 잴 널 종단 문자열의 시작 주소반환값: size_t — \0 직전까지의 문자 개수 (\0 자체는 카운트 안 함)설명: str부터 한 칸씩 전진하며 \0을 만날 때까지 카운트. \0을 찾아야 끝나는 구조라 시간복잡도 O(n). 순수 바이너리 데이터에 쓰면 안 됨(중간에 우연히 0바이트가 있으면 거기서 멈춰버림).strcpychar* strcpy(char* dest, const char* src);인자: dest — 복사받을 목적지 버퍼(반드시 src 길이+1 이상 크기여야 함) / src — 복사할 원본 널 종단 문자열반환값: char* — dest의 시작 주소 (체이닝 목적)설명: src를 처음부터 \0까지 한 바..

공부 2026.07.11