C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[11771] [만해] 소멸자에서 에러가 나는데 정확한 이유를 모르겠네요
만해 [greenuri] 948 읽음    2001-10-14 22:04
안녕하세요 만해 입니다.

제가 정희한 클래스의 일부 구요~

class THtmlParser
{
private:
  AnsiString  FTitle;

public:
  AnsiString FHtml;
  AnsiString FTagString;
  THtmlParser();
  ~THtmlParser();
  Div_Token();
  TStringList* FText;
  TStringList* FLinkes;
  TStringList* FImages;
  TStringList* FImg;
  TStringList* FTags;
  int Linkes_cnt;

  bool init( void );
  void Execute ( void );
  void FPass(void);
  void SPass(void);
  void Process_Token (TStringList* Token);
  void Divide_Token (AnsiString token,TStringList* Token);
};

밑의 소스는 생성자입니다.

THtmlParser::THtmlParser()
{
  init();
  Linkes_cnt=0;
  FLinkes = new TStringList;
  FImages = new TStringList;
  FTags = new TStringList;
  FText = new TStringList;
}
//---------------------------------------------------------------------------
/*Struct TDefTagStruct
  {
    char[10] TagName;
    int      TagLength;
    ETagKind TagKind;
  }*/
//---------------------------------------------------------------------------
bool THtmlParser::init(void)
{
  FLinkTags[0]="ADDRESS";
  FLinkTags[1]="A";
  FFrameTags[0]="IFRAME";
  FFrameTags[1]="FRAME";
  FFrameTags[2]="FRAME";
  FFrameTags[1]="FRAME";
  FImgTags[0]="IMG";
  FAddOnTags[0]="LINK";
  FAddOnTags[1]="EMBED";
  FAddOnTags[2]="BGSOUND";
return false;
}

그리고 밑의 소스는 소멸자 이고요

THtmlParser::~THtmlParser()
{
  delete FLinkes;
  delete FImages;
  delete FTags;
  delete FText;
}

이 클래스를 제 프로젝트에서 사용을 하는데

우선

#pragma link "wininet.lib"         // WinInet 라이브러리 링크
TForm1 *Form1;
THtmlParser* Parser;

씨플플 소스 부분에서 정의를 해 줬고요

OnCreate 부분에서
Parser = new THtmlParser; <- 메모리 할당을 했습니다.

그리고

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  Parser->FHtml = RichEdit1->Text;
  Parser->Execute();
  Parser->FLinkes->SaveToFile("Links.txt");
  RichEdit2->Lines->LoadFromFile("Links.txt");
/*  RichEdit2->Lines->AddStrings(Parser->FText);
  RichEdit3->Lines->AddStrings(Parser->FTags);
  RichEdit4->Lines->AddStrings(Parser->FLinkes);*/

}

이렇게 사용을 하고

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  delete Parser;       
}

위와 같이 종료를 시킬때 메모리에서 삭제 할려고 하는데 자구 에러가 나네요

코드가드도 뜨면서 메모리 릭이라고 하고요

소멸자의 위치를 어디로 해야 하는지 잘 모르겠네요

좀 알려 주세요

그럼 이만




+ -

관련 글 리스트
11771 [만해] 소멸자에서 에러가 나는데 정확한 이유를 모르겠네요 만해 948 2001/10/14
11788     Re:[만해] 소멸자에서 에러가 나는데 정확한 이유를 모르겠네요 박지훈.임프 899 2001/10/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.