객체 포인터 배열 할당은 쉽게 클래스를 만드는데 N개 만큼 만든다는 거임 예제를 통해 배워보자 Zombie* zombieHorde(int N, std::string name) { Zombie* horde = new Zombie[N]; for (int i = 0; i < N; i++) { std::cout
C++/C++ 동적 할당, 객체 포인터 할당, 레퍼런스
여기서 중요한 것은 포인터와 레퍼런스의 차이를 아는 것 → C++에서는 포인터와 레퍼런스라는 개념이 등장 포인터는 C에도 있던 개념 레퍼런스는 C++에서 등장한 개념 포인터와 레퍼런스의 차이는 함수의 매개변수로의 전달 방법으로 알아보자 매개변수를 단순 값 타입로 전달했을 경우 함수에선 단순히 복사된 값을 사용하기 때문에 원본에 접근하지 못함. 만약 포인터 또는 레퍼런스로 전달하면 함수에서도 주소를 통해 원본에 접근하여 값을 읽거나 수정할 수 있도록 해줄 수 있다. 표면적인 차이 포인터 사용 시 다음과 같은 매개변수를 포인터로 주고 함수 호출 시 주소를 전달. void func(int* ptr) { *ptr *= 2; } int num = 3; func(&num); // call by address → 함..
변수의 메모리를 new를 통해 동적 할당하는 경우 데이터는 힙 영역에 저장됨 힙에 저장된 데이터는 프로그램이 끝날때까지 유지되기 때문에 더이상 사용하지 않는 경우 반드시 delete로 해제시켜주어야 함 힙에 할당하는 것은 비교적 속도가 느리고, 포인터를 역참조하여 변수의 값에 접근하는 것 역시 직접 접근하는 것보다는 느림 일반적으로 변수를 선언할 경우 정적 할당되어 데이터는 스택 영역에 저장됨 스택 영역에 저장된 데이터는 해당 변수가 지정된 범위(scope)를 벗어날시 자동으로 해제 및 소멸 스택에 할당하는 것은 비교적 속도가 빠르지만, 스택 자체의 크기가 비교적 작으므로 유의해야함 #include int main() { //1바이트 만큼 heap 할당 char *ptr = new char; *ptr =..