을 삭제 :배열 -이 코드가 작전
Derived **args = new Derived*[2];
args[0] = new Derived();
args[0]->setname("BLABLA \n");
cout << args[0]->getname();
delete args[0];
args[1] = new Derived();
args[1]->setname("BLABLABLA\n");
cout << args[1]->getname();
delete args[1];
delete [] args;
이 delete [] args
가 필요하다? 그리고 왜?
또한 Derived **args = new Derived*[2]
은 실제로 무엇을 수행합니까? 두 포인터에 대한 공간을 Derived
에 할당합니까? 그렇다면 어떻게 동적으로 힙에 파생 된 두 개의 객체가 들어있는 배열을 만들 수 있습니까?
@SteveWellens를 참조하십시오. 즉, 포인터의 배열을 해제하지만 포인터가 가리키는 개체를 확실히 해제하지 않습니다. – Blastfurnace
좋아요, 방금 내 코멘트를 삭제했습니다. –
"파생 된 두 포인터의 공간을 할당합니다"는 의미는 무엇입니까? 그래서 기본적으로 방금 파생 된 유형의 객체에 대한 포인터를 보유하는 크기 2의 배열을 만들었습니까? 그렇다면 어떻게 동적으로 힙에 파생 된 두 개의 객체가 포함 된 배열을 만들 수 있습니까? – Kam