C++ 스택과 힙의 차이 알아보기: 메모리 구조와 동적 할당
프로그램에서 사용하는 모든 데이터가 같은 방식으로 생성되고 사라지는 것은 아닙니다. 함수 안에 선언한 지역 변수는 일반적으로 함수 호출과 함께 생성되고 함수가 끝나면 자동으로 정리됩니다. void Function() { int number = 10; } 반면 new로…
Series Archive
게임 개발 및 프로그래밍에 관련된 주제에 대한 카테고리 입니다.
프로그램에서 사용하는 모든 데이터가 같은 방식으로 생성되고 사라지는 것은 아닙니다. 함수 안에 선언한 지역 변수는 일반적으로 함수 호출과 함께 생성되고 함수가 끝나면 자동으로 정리됩니다. void Function() { int number = 10; } 반면 new로…
앞선 글에서는 같은 타입의 여러 데이터를 배열에 저장하는 방법과 배열 이름이 대부분의 표현식에서 첫 번째 원소를 가리키는 포인터로 변환되는 과정을 알아보았습니다. 문자열도 이러한 배열과 포인터의 개념을 바탕으로 표현할 수 있습니다. const char* name =…
같은 타입의 데이터를 여러 개 저장해야 할 때 각 변수를 하나씩 선언하면 코드가 길어지고 관리하기도 어렵습니다. int score1 = 100; int score2 = 90; int score3 = 80; C++에서는 배열(Array)을 사용해 같은 타입의 여러…
함수의 매개변수를 일반 변수로 선언하면 호출할 때 전달한 값이 매개변수에 복사됩니다. void ChangeValue(int value) { value = 20; } 함수 안에서 복사본인 value를 변경해도 호출한 쪽의 원본 변수에는 영향을 주지 않습니다. 함수에서 원본 변수의…
앞선 글에서는 포인터에 변수의 메모리 주소를 저장하고, 역참조 연산자 *를 사용해 원래 값에 접근하는 방법을 알아보았습니다. int number = 5; int* pointer = &number; *pointer = 10; C++에서는 레퍼런스(Reference)를 사용해 기존 변수에 직접 접근할…
프로그램에서 사용하는 변수와 객체는 메모리의 특정 위치에 저장됩니다. 일반 변수에는 정수나 문자와 같은 값이 저장되지만, 포인터(Pointer)에는 다른 데이터가 위치한 메모리 주소를 저장할 수 있습니다. int number = 10; int* pointer = &number; 위 코드에서…
C++에서는 변수를 선언할 때 일반적으로 변수의 타입을 직접 작성합니다. int number = 10; double speed = 5.5; const char* npcName = "Toto"; 하지만 변수의 초기화 값만 보아도 타입을 명확하게 알 수 있는 경우가 있습니다.…
C++ 코드를 작성하다 보면 같은 타입을 여러 곳에서 반복해서 사용하거나, 함수 포인터처럼 선언이 복잡한 타입을 다뤄야 할 때가 있습니다. 예를 들어 다음과 같은 함수 포인터 선언은 한눈에 의미를 파악하기 쉽지 않습니다. int (*function)(char, double);…
함수를 호출하면 프로그램은 함수에 전달할 인자를 준비하고, 함수의 코드를 실행한 뒤 다시 호출한 위치로 돌아옵니다. 이러한 함수 호출에는 일정한 비용이 발생합니다. 함수의 크기가 매우 작고 자주 호출된다면 함수 호출에 필요한 작업이 함수 본문을 실행하는…
C++ 소스 파일에 코드를 작성했다고 해서 컴퓨터가 그 내용을 바로 실행할 수 있는 것은 아닙니다. 우리가 작성한 C++ 코드는 빌드 과정을 거쳐 기계어로 변환되고, 다른 소스 파일 및 라이브러리와 결합된 뒤 하나의 실행 파일이…