Temp* temp = (Temp*)malloc(sizeof(Temp));
free(temp);
이럴 경우 생성자는 호출되지 않습니다.
Temp* t = new Temp();
delete t;
이럴 경우 생성자는 호출됩니다.
이게 new와 malloc의 차이점이라 생각하는데요. 이것 말고 다른 차이점은 있을까요?
그리고 내부적으로 malloc와 new의 동작을 알고 싶습니다.
Tree를 구현하려고 CNode 안에 left, right 같은 것을 생성자로 NULL로 초기화를 하려고 하는데 의외로 생성자가 통하지 않아서
감짝 놀라고 있는 중입니다.(malloc로 하고 있었거든요)
아 그리고 추가 질문
변수를 초기화 하지만 쓰레기 값이 들어가지요.
"그렇다면 변수에 쓰레기값이 들어 있다면" 이라는 것을 표현하고 싶은데 이런 것은 표현할 방법이 없나요?
즉 if ( 변수명 == 쓰레기값 )
{ 어절씨구리 }
이런 것을 의도하고 싶습니다. ...뭐 없다면 어쩔 수 없지만요
그럼 조언 부탁드리겠습니다.(__)
근데 new 의 경우에는 실제 동작을 사용자가 재정의할 수 있다는 게 다릅니다. os한테 달라고 할지, 먼저 한사발 만들어놨던데서 받아올지 어쩔지 커스터마이징이 가능하다는거.
그리고 변수 쓰레기값에는 나름대로의 의미가 있습니다.
0xCCCCCCCC : 만들었는데 초기화 안됐음.
0xfeeefeee : delete 된 영역
0xcdcdcdcd : 이게 new로 만들었다가 초기화 안한거던가=_= 0xcccccccc 하고 잠시 헷갈리는데 여튼간에 이런식으로 내용 정리된거 검색해보면 나옵니다.
그런데, 이게 릴리즈버전에서는 장담을 못합니다. 쓰레기값에 막연한 기대를 하면서 짜면 안됩니다.