자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
C++ Builder [질문] 동적 생성된 버튼 객체의 해제 유무
2021.03.05 11:13
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
현재 C++ Builder 10.3 Communication Edition을 사용해서 안드로이드 프로그램 작성 중입니다.
==================================================
#pragma package(smart_init)
#pragma resource "*.fmx"
#pragma resource ("*.Windows.fmx", _PLAT_MSWINDOWS)
#pragma resource ("*.LgXhdpiPh.fmx", _PLAT_ANDROID)
#pragma resource ("*.NmXhdpiPh.fmx", _PLAT_ANDROID)
TForm1 *Form1;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(((TButton*)Sender)->Text + L" 클릭!");
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TButton *btn = new TButton(this);
btn->Width = 50;
btn->Height = 50;
btn->Text = L"버튼";
btn->Parent = layout1;
btn->OnClick = Button1Click ;
}
=============================================
위 코드에서 처럼 버튼 동적 생성은 되는데 프로그램 종료 시에 따로
btn 객체를 해제해야 하나요???
아니면 FMX ARC 기능으로 자동 해제가 되는 건가요??
또 아니면 new TButton(this);에 의해 Form이 해제될 때 같이 해제가 되는 건가요?
감사합니다.
C++ Builder [질문] 동적 생성된 버튼 객체의 해제 유무
2021.03.05 11:13
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요.
현재 C++ Builder 10.3 Communication Edition을 사용해서 안드로이드 프로그램 작성 중입니다.
==================================================
#pragma package(smart_init)
#pragma resource "*.fmx"
#pragma resource ("*.Windows.fmx", _PLAT_MSWINDOWS)
#pragma resource ("*.LgXhdpiPh.fmx", _PLAT_ANDROID)
#pragma resource ("*.NmXhdpiPh.fmx", _PLAT_ANDROID)
TForm1 *Form1;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(((TButton*)Sender)->Text + L" 클릭!");
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TButton *btn = new TButton(this);
btn->Width = 50;
btn->Height = 50;
btn->Text = L"버튼";
btn->Parent = layout1;
btn->OnClick = Button1Click ;
}
=============================================
위 코드에서 처럼 버튼 동적 생성은 되는데 프로그램 종료 시에 따로
btn 객체를 해제해야 하나요???
아니면 FMX ARC 기능으로 자동 해제가 되는 건가요??
또 아니면 new TButton(this);에 의해 Form이 해제될 때 같이 해제가 되는 건가요?
감사합니다.
Owner 즉 Form이 해제되면, 같이 해제되는 것으로 알고 있습니다.
https://cppthingsblog.wordpress.com/2019/12/09/using-deleaker-in-c-builder/에서 메모리 누수를 검사할 수 있는 도구 중 하나인 Deleaker에 대한 설명과 기본적인 메모리 관리 설명이 있습니다.