const 참조 및 포인터별로 한 번씩 요소를 내 모음에 추가하는 두 가지 방법을 제공합니다.할당 및 스택 메모리 처리
void push_back(const value_type *val) {
element *elem = new element(val);
//...
}
void push_back(const value_type &val) {
push_back(&val);
}
element
클래스는 값을 포인터로 유지합니다.
분명히 요소가 팝되거나 콜렉션이 삭제되면 요소가 포인터로 추가되면 메모리를 해제해야합니다. 그러나 요소를 수동으로 할당하지 않고 참조로 전달할 때 오류가 발생합니다.
요소가 push_back 시간에 동적으로 할당 된 경우를 저장하는 것보다이 문제를 해결할 수있는 다른 옵션이 있습니까?
코드를 올바르게 이해하면 'push_back (const value_type &)'가 문제를 묻는 중입니다. 내가 이렇게하면 어떡하지? '{value_type a; collection.push_back (a); }''collection' 객체는 스코프의 끝에서'a'가 파괴되면 매달려있는 포인터를 가지고 끝납니다. ** 이미이 문제로 인해 끔찍한 디자인입니다. ** "객체가 스택 또는 힙에 있는지 여부에 관계없이 전체적으로"매우 다른 작업을 수행하는 것에 대해서도 언급하지 않았습니다. –
@Macmade 여러 요소가 같은 요소를 가리 키도록해야하는데 동적으로 병합하고 조각화해야합니다. – Appleshell
@Insilico 보류 된 변수는 범위 끝에서 삭제되지 않습니다. – Appleshell