비슷한 질문이 많지만 아직 도움이되는 내용을 찾지 못했습니다. 나는 지금이 시간 동안 몇 시간 동안 있었고 그것은 나를 미치게 만들었다. 복사 생성자에 의해 생성 된 변수에 대해 소멸자가 호출되면 세그먼트 화 오류가 발생합니다.소멸자가 세분화 오류를 일으킬 수 있음
//Copy Constructor
Stack::Stack(const Stack &aStack)
{
size = 0; //this is incremented as new items are pushed onto the stack.
cap= aStack.cap;
items = new int[aStack.cap]();
for (int i = 0; i < aStack.size; i++)
this->push(aStack.items[i]); //Adds an item if not full and increments size
// I have also tried: items[i] = aStack.items[i]
}
//Destructor
Stack::~Stack()
{
cap= 0;
size= 0;
delete [] items;
items = NULL;
}
는 내가 복사 생성자의 잘못을하고 있어요 느낌을 얻을 수 있지만, 나는 그것이 무엇인지 알아낼 수 없습니다.
상위 요소 대신 크기를 반복해야합니까? 스택에는 일반적으로 인덱서 블 요소가 있습니까? – chris
그리고'top'은 복사 생성자의 새 객체에 설정되지 않습니다. – syam
잠깐, 왜'top'이 함수가 아닌가? (만약'size'도 없으면 같은 것을 주장 할 것이다.)? – chris