|
안녕하세요...
기본적으로 new ~ delete 를 사용한다고 하는 것은, 포인터 변수이니까 해주어야 한다는 개념은 아닙니다.
보다 더 근본적인 이유는 우리가 원하는 순간에 메모리를 할당하고, 해제해준다는 사실입니다. 그러니까... new 가 있다는 것은 바로 그 지점이 메모리를 할당하기 위해 필요한 지점이라고 보시면 됩니다.
TButton *Button1;
위처럼 빌더에서 제공해주는 컴포넌트의 경우, 님께서 생각하신대로 빌더에서 알아서 처리를 해 줍니다.
하지만, 꼭 그것이 빌더에서 제공해주는 컴포넌트이니까 우리가 new를 사용하지 않는다는 개념은 아닙니다.
단지, Button 같은 경우 거의 대부분이 Form을 설계를 하면서 만들어주면 프로그램이 끝날 때까지 계속 사용하지 않습니까? 그래서 따로 메모리를 할당하는 시점이라는 것이 필요없는 셈이니까 빌더에서 편리하게 알아서 해 주는 것입니다.
다시 말해서, 만약 님께서 직접 Button을 동적으로 생성, 소멸 시킬 수도 있는데, 이때는 님께서 new ~ delete를 책임지고 코딩해 주어야만 합니다.
님께서 만든 컴포넌트의 경우, 그것을 기존의 Button 처럼 설계시에 사용한다면 빌더가 알아서 처리를 해주므로 new를 쓸 필요가 없지만, 원하는 순간에 동적으로 생성하려면 님께서 반드시 new로써 메모리를 할당해주고, 해제시 delete를 해 주어야 합니다.
단, 님께서 설계한 클래스의 경우에는 설계시에 클래스를 사용한다는 것은 있을 수 없으므로, 프로그램 안에서 new ~ delete를 사용하여 직접 처리해 주어야 합니다.
솔직히 저도 확실하게 이해했다고 볼 수는 없지만, 계속 공부하는 입장에서 도움이 되었으면 합니다...
그럼... 즐넷하세요...
지영배 님이 쓰신 글 :
:
: 폼에 버튼을 하나 언엊다고 가정하면..
:
: 메인 소스 헤더파일엔..
:
: TButton *Button1;
:
: 뭐.. 이런식으로.. 나오던데요..
:
: 이렇게 되어있다면.. cpp 파일에서는 new 연산자로 메모리에..
:
: 할당을 해야되는거 아닌가요?. -_-+
:
: 빌더가 내부적으로 처리하는건가요?
:
: 그리고 만약 사용자가 직접 만든 컴포넌트나 or 클래스를..
:
: 사용할려고 한다면 마찬가지로 new 연산자를 이용해서
:
: 메모리에 할당을 해야되는지 안해도 되는지 궁금하네요..
:
:
|