1.8.2 포인터
포인터는 메모리 주소를 포함하는 변수다. 이 주소는 주소 연산자(예를 들어 &x) 또는 동적으로 할당한 메모리로 얻을 수 있는 다른 변수의 주소일 수 있다. 먼저 후자인 동적인 크기의 배열을 할당하는 것부터 시작해 보자.
int* y = new int[10];
이 배열은 int 타입 요소가 10개인 배열을 할당한다. 동적 할당을 통해 런타임에 배열의 크기를 정할 수 있다. 이전 절에 있던 벡터 읽기 예제를 구현할 수도 있다.
ifstream ifs("some_array.dat"); int size; ifs >> size; float* v = new float[size]; for (int i = 0; i < size; ++i) ifs >> v[i];
포인터는 배열과 같은 위험이 있다. 범위를 벗어난 데이터에 접근하면 프로그램에 충돌이 발생하거나 데이터가 무효화 될 수 있다. 동적으로 할당한 배열을 처리할 때 배열 크기를 저장하는 것은 전적으로 프로그래머의 책임이다.
또한, 프로그래머는 더 이상 필요하지 않을 때 메모리를 해제해야 할 책임이 있다. 이는 다음 코드를 통해 수행한다.
delete[] v;