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
[27429] [질문] WideString의 Operator += 에 대해서.. (오타 수정)
박근우 [exsun] 543 읽음    2003-10-08 09:39
:
:  안녕하세요 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번지의 내용은
:
:  자동으로 지워지는 지도 궁금합니다.
:
:  아시는 분 있으면 꼭 가르쳐 주세요

+ -

관련 글 리스트
27429 [질문] WideString의 Operator += 에 대해서.. (오타 수정) 박근우 543 2003/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.