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 클래스를 구조체 내에 마음대로 선언해서 메모리 누수없이 사용하는데
도움이 될 것입니다.
이런게 팁이 될려나..
|