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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[528] AnsiString 재초기화는 어떻게 할까?
김태선 [jsdkts] 6907 읽음    2005-12-04 15:27
String  str;
str = "난 스트링입니다.";

str = NULL;  // 이건 str == "0" 가 됩니다.

str = ""; // 이것이 정답입니다.

String 객체에 "" 을 대입하면 자동으로 메모리를 되돌리고,
처음 String str; 을 선언할 당시 처럼 내부 데이타가 0로 되돌아 갑니다.

참고로,
char  *str1 = "";
같은 경우는 스트링을 초기화하는 것이 아니고 다만 str1 에 "";
이 위치하고 있는 곳의 메모리 포인트가 대입되는 것입니다. 혹 오해하는 분이 계실까봐 ㅡㅡ;

또 참고로,
String  abc = "abcd";
같은 경우 String 클래스는 abcd를 별도의 메모리에 복사해서 데이타를 관리한다는 사실을 알아야 합니다.
그리고 얼마만큼의 메모리가 할당될지는 String 클래스가 보증하는 사항이 아닙니다.
뭐하러 별도의 메모리를 할당하는지는
char  *abcd = "abcdefg";
String abc = abcd;
같은 경우에 abcd 가 원본을 가져야 하기 때문입니다.
abc 를 조작한다고 해서 abcd 가 가리키는 문자열의 내용이 바뀌면 안되겠죠.


String 클래스는 가급적 자세하게 아는게 좋을거 같아서 올립니다.
이런 특성을 알면 String 클래스를 구조체 내에 마음대로 선언해서 메모리 누수없이 사용하는데
도움이 될 것입니다.

이런게 팁이 될려나..

+ -

관련 글 리스트
528 AnsiString 재초기화는 어떻게 할까? 김태선 6907 2005/12/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.