My *p[3]; p[0] = new My_derived1(); p[1] = new My_derived2(); p[2] = new My_derived3(); 위 코드가 있음 이때 delete[] p; 하는거랑 for i < 3 delete p[i]; 하는거랑 다름?
응 달라!!! ㅇㅅㅇㅋㅋㅋ
뭐가다른거임???
new, delete <== 생성자, 소멸자 호출해줘야 함
new[] 로 생성 하면 시작 주소 앞에 4바이트? 였나 아무튼 배열이 몇개인지 저장을 해둠 그리고서 delete[] 하면 앞에 읽어서 그 수만큼 소멸자 호출하는거임
그리고 위에서 예시로든 delete[] p; 는 말이 안됨 p는 스택영역에 3칸 받아놨는데 그걸 delete로 어케 해제함
미친.. delete[]는 애초에 new[]로 할당했을때만 쓰는거임. delete는 new 랑 짝이고. 애초에 다른 할당자라 생각하자 ㅇㅇ 예시는 윗애 말 맞다나 걍 말이 안됨.