0
Имя головы файла Stack.h
, как показано ниже:Почему результаты пробега как последняя строка «ошибка сегментации (ядро сбрасывало)»
#include <iostream>
using namespace std;
class Stack
{
struct Link
{
void* data;
Link* next;
Link(void* dat, Link* head);
~Link();
} *head;
public:
void push(void * dat);
void* pop();
void* peek();
Stack();
~Stack();
};
Stack::Link::Link(void* dat, Link* head)
{
data = dat;
next = head;
}
Stack::Link::~Link() { }
void Stack::push(void* dat)
{
head = new Link(dat, head);
}
Stack::Stack()
{
head = 0;
}
void* Stack::pop()
{
Link* old = head;
void* result = head->data;
head = head->next;
delete old;
return result;
}
void* Stack::peek()
{
if (head == 0) return 0;
return head->data;
}
Stack::~Stack()
{
if (head != 0) cout << "Stack is not empty" << endl;
}
// this is cpp file name as StackTest.cpp
#include "Stack.h"
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
Stack stack;
ifstream in("Stash.h");
string line;
while (getline(in, line))
{
stack.push(new string(line));
}
string* str;
while (str = (string*)stack.pop())
{
cout << *str << endl;
delete str;
}
}
Результата выполнения последней строку, как показано ниже:
ошибки Segmentation (ядро сбрасывали)
команда компиляции является
g++ Stash.h StashTest.cpp -o StashTest
в Ubuntu 12.04
Почему результат запуска в качестве последней строки - Segmentation fault (core dumped)
?
Пройдите через основной файл с вашего отладчика сузить проблему. – 0x499602D2