|
정상적으로 동작하는게 버그 입니다.
char * data = new char; <- 메모리 1byte를 생성합니다.
data = "AAAAAA"; <- data 의 포인터 어드레스에 "AAAAAA" 를 매핑합니다. 일단 이부분이 말이 안됩니다.
data 에 "AAAAAA" 라는 문자열을 넣고 싶으시면 해당 스트링 사이즈+1(널) 만큼의 메모리를 필요로 합니다.
저부분을 정상적으로 바꿔보면
char * data = new char[6+1];
strcpy(data, "AAAAAA");
delete [] data;
이런식이 되어야 합니다.
그럼..
차베스 님이 쓰신 글 :
: 예제로 아래와 같은 코딩을 하였습니다.
: char *data = new char;
: data = "AAAAAA";
: delete data;
: 그런데 웃기는게, 볼랜드 C++ Builder 에서는 메모리도 세지않고, 정상적으로 작동하는데,
: 비절C에서 코딩해 보면 delete data 에서 자꾸 에러가 납니다.
: 거참...
:
: 뭐가 차이인지 알지 못해서 이렇게 글을 올리게 되었습니다.
: 아시는분은 답변해 주시면 감사하겠습니다.
|