감사합니다. ^^
장성호 님이 쓰신 글 :
: FAQ의 초보자를 위한가이드3에서
: String부분을 한번 살펴 보십시요
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=135
: ---------------------------------------------------------------------
: 간단히 설명하면
: char는 1Byte짜리 변수고..
: AnsiString은 class입니다.
:
: AnsiString 은 void *Data라는 멤버 변수 딱 하나 가지고 있는데..
: 실제로 이놈 (void *Data)이 문자열Address를 가지고 있습니다. (char * 이죠)
:
: Data라는 변수가 private로 되어있기때문에..
: c_str()이라는 메소드를 통해 char*를 return받습니다.
:
: AnsiString s="12345";
:
: 위와같이 코딩하면..
: Heap에 "12345"를 저장할 메모리를 할당한후에
: 그 주소를 AnsiString.Data에 넣어둡니다.
:
: 그리고 매우 중요한것은
: AnsiString클래스는 Copy On Write 패턴으로 디자인된 class입니다.
:
: String s1="1234";
: String s2=s1;
:
: 위와같이 하면 s1의 내용이 s2로 복사가 되는것이 아니라..
: s1.Data의 주소가 s2.Data에 복사합니다.
: 그리고 RefCount가 하나 증가되구요..
:
: 어느한쪽에서라도 수정을 하게되면..
: RefCount가 하나 줄어들고..
: 수정하는쪽은 메모리 새로 할당해 원본을 copy한후에.. 수정합니다.
: 그러면 s1.Data에 들어있는 Address랑 s2.Data에 들어있는 Address가 다른 값이 되죠
:
: 그리고 AnsiString은
: 문자열 조합 s1+s2등을 할수 있도록 만든클래스이며..
: 기타 여러가지 기능이 있습니다.
:
: 그럼..
:
:
: 하이~ 님이 쓰신 글 :
: : AnsiString 과 char에 차이가 뭔가요?
: : 그리고 c_str()은 무엇인지 알려주세요 관련이 있다고 하던데...
|