본문 바로가기
컴퓨터/전산, 그 외

new 가 무서워, ㅋㅋ.

by adnoctum 2013. 5. 1.




   STL을 사용하기 시작하면서부터는 new 를 별로 사용하지 않는다. STL library 자체가 그 기능으로 인해 수많은 편의를 제공해 주는 것도 있지만, 이렇게 new 를 이용한 메모리의 동적 할당을 하지 않아도 충분히 코딩을 할 수 있게 해줌으로 인해 메모리를 건드려 발생하는 문제를 회피하게도 해주는 것이다. 이 문제는 상당히 크다. 왜냐 하면, 메모리를 잘못 건드려 문제가 발생하는 경우가 많고, 그럴 경우 디버깅 하기가 조금 어렵기 때문이다. 


   연습도 할 겸, 데이터가 얼마나 커질지도 알 수 없기에, 요즘 후배녀석 한 명에게 동적 할당을 이용해서 코딩을 하라고 시켰다. 이 녀석이 이제는 C++ 에서 * 와 & 도 적당히 쓸 줄 알고, 메모리 사용하는 것도 조금씩 따라 오기는 하는데 초반에 너무 STL 을 많이 써서 new 가 코드에 들어가기 시작하면 약간 겁을 먹는 듯 한데, ㅋㅋㅋ, 충분히 이해하는 바이다. STL을 쓸 때는 나지 않던 segmentation fault 라던가, access violation 이 여기저기서 튀어 나오고, 메모리가 새는 것이 보이고, 하니, ㅋ, 아주 정신이 없을 것이다. 하지만 이 단계를 지나야 진정 C++의 참맛을 한 20% 맛보는 것이라는 것이 개인적인 생각, ㅋ. 


   아, * 와 & 가 나왔으니, C++ 을 배우면 초반엔 * 과 & 을 매우 어려워 할 수 있는듯이 보인다. 여태까지 이것을 쉽게 사용하는 C++ 초심자들을 별로 못 봤다. 


int * a = NULL; 

int b = 10; 

a = &b; 

*a = 1; 

const int& c = b; 

c = 10; // 에러. 

int **k = &a; 

**k = 7; 

**k = *a * b; 


뭐, 위 같이 *, & 는 그 위치에 따라 의미가 달라지기 때문에 이 부분이 좀 혼란스러운가 보다. 그런데 new 를 쓰거나, 나처럼 pointer 나 참조를 쓸 경우 & 과 * 를 자주 사용해서, ㅋ, 그 후배는 더 혼란스러울지도 모르겠다, 거기다 new 에 의한 메모리 에러가 갑자기 튀어나오기 시작하니, ㅋㅋㅋ.