초등의 선을 따라 가기 쉽기 때문에이 질문을 용서하십시오. 또한, 광범위하게 봤어,하지만 내가 발견 한 모든 예제는 메모리 누수가 아주 분명 결과 구현을 사용했다. 다음 의사 코드의C++ 함수의 포인터 범위/파기
를 적어 둡니다 : 내가 함수 본문에 선언 된 부모 클래스, 내가 포인터를 의미하는 "부모", meam하지 않는 파괴함으로써
void myArbitraryFunc(){
...
// Create Pointer to parent class
MyParentClass* parent = (MyParentClass*)this.getParent();
parent->doSomething(someData);
...
}// Is parent destroyed here?
. 그것이 범위를 벗어나면 파괴됩니다, 맞습니까? 그렇다면 왜? 원래 부모와 연결되지 않은 상태에서 클래스 포인터의 복제본을 만드는 방법은 무엇입니까?
'parent'포인터가 삭제되었습니다. 동일한 이유 때문에'int'와 같은 지역 변수는 모두 파괴됩니다. 계속 유지하려면 반원에게 그것을 저장하거나 반납하십시오. –
@Neeil Kirk는 int와 같은 것임을 명확히 해 주셔서 감사합니다. 그러나 포인터를 반환하여 부모 클래스에 대한 액세스를 전달하지 않습니까? Doppleganger/관련이없는 복제본을 전달하고 싶다면 어떻게해야합니까? – Krythic
예. 원본 개체의 복사본을 반환 하시겠습니까? –