什么是导致此STATUS_ACCESS_VIOLATION?

时间:2015-03-09 02:10:54

标签: c++

我吮吸c ++所以我怀疑这是我犯过的一个愚蠢的错误。经过一些研究后,我发现当程序试图访问无效的内存块时会发生STATUS_ACCESS_VIOLATION。这就是说我没有看到导致这种情况发生在下面的代码中的原因。

int main() {
cout << "!!!Hello World!!!" << endl;
Node* testNode = new Node("jhon","doe", 1, 80);
BraidedLinkedList* testList = new BraidedLinkedList();
testList->AddNode(testNode);
return 0;}

BraidedLinkedList.cpp

void BraidedLinkedList::AddNode(Node *newNode) {
if (this->start == NULL) {
    this->start = newNode;
    cout<<newNode->getInfo();
//the following line does not work either
    //cout<<this->start->getInfo()<<endl;
}

Node.cpp

const string& Node::getInfo() {
string returnString = "";
returnString += this->getFristName() + " ";
returnString += this->getLastName() + " ";
returnString += this->getId() + " ";
returnString += this->getGrade() + " ";
}

1 个答案:

答案 0 :(得分:1)

你的'Node :: getInfo'方法正在返回一个临时字符串对象的const引用。在尝试打印字符串时,它很可能会崩溃。我假设你只是遗漏了回报。在这种情况下,返回类型应该只是'string'。