Clang 3

[크래프톤 정글] malloc, calloc, realloc

malloc, calloc, realloc 같은 동적 메모리 할당 함수들은 C 언어의 표준 라이브러리 함수들이다.실제로는 운영체제(OS)에서 제공하는 시스템 호출(syscall)을 통해 메모리를 할당하는 과정으로 이루어진다.1. malloc의 내부 동작malloc은 사용자가 요청한 크기의 메모리를 힙 영역에서 할당하는 함수이다.malloc이 어떤 흐름으로 메모리를 할당하는지 알아보자기본 흐름사용자가 메모리를 요청: malloc에 의해 사용자는 지정한 크기의 메모리를 할당받기를 원한다.힙 영역에서의 메모리 관리: C 프로그램은 스택(Stack)과 힙(Heap)이라는 두 가지 주요 메모리 영역을 사용한다. 힙은 프로그램 실행 중에 동적으로 메모리를 할당하는 데 사용된다. 힙은 연속된 메모리 블록으로 관리되며..

Clang 2024.10.07

[크래프톤 정글] 구조체 와 클래스 의 차이

1. 클래스와 구조체의 주요 차이점1.1 C와 C++에서의 차이먼저, C에서는 구조체(struct)가 데이터 타입을 정의하는 데 사용된다. C 언어의 구조체는 데이터를 묶어서 하나의 사용자 정의 데이터 타입으로 만드는 역할만 수행하며, 함수나 메서드를 포함하지 못한다. 반면에, C++과 같은 객체 지향 프로그래밍 언어에서는 클래스가 구조체와 유사하지만 더 많은 기능을 제공한다. C++의 구조체는 함수도 포함할 수 있지만, 기본적으로 다루는 접근 제어가 다르고, 객체 지향적인 요소가 약하다.1.2 클래스(C++)와 구조체(C)의 주요 차이점클래스(Class):메서드 포함 가능: 클래스는 변수(멤버 변수)뿐만 아니라, 그 변수를 조작하는 함수(멤버 함수)도 포함할 수 있다.캡슐화: 클래스는 캡슐화를 통해 외..

Clang 2024.10.05

[크래프톤 정글 ] 포인터

C 언어에서 포인터는 변수의 메모리 주소를 저장하는 변수이다.즉, 포인터는 다른 변수나 메모리 상의 데이터의 위치를 가리키는 역할을 한다. 이로 인해 직접적으로 메모리 주소를 다룰 수 있는 유연성과 강력함을 제공하지만, 그만큼 주의가 필요하다.포인터는 메모리 관리, 함수 매개변수 전달, 동적 메모리 할당 등의 영역에서 중요한 역할을 한다.1. 포인터 선언과 기본 사용법포인터는 메모리 주소를 저장하는 변수이므로, 선언할 때는 데이터 타입 뒤에 *을 붙여 선언한다.int *ptr; // int형 변수를 가리키는 포인터이 선언은 ptr이 int형 데이터를 가리킬 수 있는 포인터임을 의미한다. 하지만 아직 ptr은 유효한 주소를 가리키고 있지 않으므로, 초기화되지 않은 상태에서 이를 사용하면 안 된다.1.1 포..

Clang 2024.10.05