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
[27424] [질문] WideString의 += operator에 대해서
박근우 [] 587 읽음    2003-10-07 22:02

안녕하세요 C++을 공부하는 학생입니다.

WideString의 += 연산자에 대해서 궁금한 것이 있어서 이렇게 질문을 드립니다.
------- 소스 시작 --------------
WideString* pStr1 = new WideString("ABC");        <--- 1번
WideString* pStr2 = new WideString("XYZ");
WideString* pStr3 = pStr1;

*pStr1 += pStr2;                                  <--- 2번

------- 소스 끝 -------------
위의 결과는 ABCXYZ입니다.

그런데 제가 궁금한 것은요 1번 과 2번 에 있는데요

1번일때 pStr1의 주소값이랑 2번 이후의 pStr1의 주소값이 다릅니다.

제가 알기로는 같은 주소상에서 재할당이 되어야 하는게 아닌가 하거든요

1번에서의 pStr1의 주소가 100번지였다면 2번에서의 pStr1의 주소는 200번지입니다.

더더욱 이상한것은 pStr3의 주소도 역시 100번지에서 200번지로 바뀌어 있다는 것입니다.

제가 생각한 것은 pStr1이 원래 가리키던 주소 100번지에 ABCXYZ가 할당되고

이 할당된 영역은 초기에 할당한 영역보다 커서

예약하지 않은(new로 할당하지 않은) 공간까지 잠식하게 되는 것입니다.

그래서 결과적으로 memory aceess 관련 에러가 날 것이라 생각을 했는데

아예 새로운 주소로 가리키고 있다는 것입니다.

---------------------------------------------------------

저렇게 새로운 공간을 가리키게 되면 예전에 가리키고 있던 100번지의 내용은

자동으로 지워지는 지도 궁금합니다.

아시는 분 있으면 꼭 가르쳐 주세요

+ -

관련 글 리스트
27424 [질문] WideString의 += operator에 대해서 박근우 587 2003/10/07
27428     Re:[질문] WideString의 += operator에 대해서 임문환.실업자 808 2003/10/08
33590         Re:Re:[질문] WideString의 += operator에 대해서 박근우 658 2003/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.