C++ new에 대해서
글쓴이: sinwho / 작성시간: 화, 2011/11/08 - 6:22오후
char * hobby = new char[2];
hobby = "sinwho";
cout << hobby << endl;
이라는 문장에서 new로 char형의 메모리 공간을 2개 선언했잖아요
근데 hobby에 문자열 "sinwho"게 다 들어가는 이유가 뭐에요?
출력도 제대로 되고
cout << hobby[4] 도 제대로 출력되는데
char * hobby = new char;
와
char * hobby = new char[2];
의 차이점이 뭔가요??
만약 char형이 1바이트라면 위에거는 1바이트만 밑에 꺼는 2바이트의 메모리를 할당 해주는거 아닌가요?
이제 상속 들어가야되는데 갑자기 이게 너무 헷갈리네요..ㅠㅠ
그리고 항상 감사합니다.^^
Forums:
그렇게 쓰면 new한 걸 delete 할 수
그렇게 쓰면 new한 걸 delete 할 수 없습니다.
정상적이라면 strcpy를 써야죠. 물론 크기에 맞춰서.
그냥 assign시키면 기껏 할당한 주소가 훨훨 날아갑니다.
------------------------------
How many legs does a dog have?
부연설명하자면.. 첫 번째 라인에서 char[2]
부연설명하자면..
첫 번째 라인에서 char[2] 공간을 할당받은 후에 hobby가 그 공간을 가리키게 되는데,
두 번째 라인에서 그 공간에 sinwho 라는 문자열이 복사되는 것이 아니라... 다른 곳에 있는 "sinwho" 라는 문자열을 hobby가 새로 가리키게 됩니다.
기존의 char[2]는 더이상 아무도 가리키지 않는 버려진 공간이 되구요.
코딩하면서 작성한 ""로 감싸진 모든 문자열들은 실행시에 메모리 어딘가에 읽기 전용으로 올라가게 됩니다.
댓글 달기