J'utilise Visual Studio 2013. J'obtiens l'erreur Access violation reading location 0xCDCDCDD1
. Les références de Wikipedia: Magic Numbers, here, et this question me disent que j'utilise un pointeur non initialisé. Je pense que le problème est avec la fonction malloc
que j'utilise, bien que je me suis référé au doc CPlusPlus avant de l'utiliser.Accédez à l'emplacement de lecture de violation 0xCDCDCDD1
Mon code:
#include "SingleNode.h"
#include "SingleList.h"
#include <iostream>
SingleList::SingleList() {}
SingleList::~SingleList() {}
...
void SingleList::addHead(int value){
ISingleNode *temp1 = (ISingleNode *)malloc(sizeof(SingleList));
head = NULL;
temp1->setValue(value);
temp1->setNext(head->getNext());
if (!head->getNext())
{
head = temp1;
}
else
{
temp1->setNext(head->getNext());
head = temp1;
}
}
...
L'erreur est dans la ligne temp1->setValue(value);
La fonction setValue(int value)
est inclus d'ici:
#include "SingleNode.h"
SingleNode::SingleNode() {}
SingleNode::~SingleNode() {}
void SingleNode::setValue(int value){
this->value = value;
}
int SingleNode::getValue(){
return value;
}
ISingleNode * SingleNode::getNext(){
return next;
}
void SingleNode::setNext(ISingleNode * next){
this->next = next;
}
SingleNode.h:
#pragma once
#include "Interfaces01.h"
class SingleNode :public ISingleNode{
private:
int value;
ISingleNode * next = NULL;
public:
SingleNode();
~SingleNode();
void setValue(int value);
int getValue();
ISingleNode * getNext();
void setNext(ISingleNode * next);
};
SingleList.h:
#pragma once
#include "Interfaces01.h"
class SingleList :public ISingleList{
private:
int value;
ISingleNode * head=NULL;
ISingleNode * temp=NULL;
ISingleNode * next=NULL;
ISingleNode * temp1;
public:
SingleList();
~SingleList();
ISingleNode * getHead();
void setHead(ISingleNode * head);
void addHead(int value);
void orderSort2();
void orderSort3();
void sequenceOrderSort();
void reverse();
ISingleNode * swap(ISingleNode * head, int k);
ISingleNode * get_node(ISingleNode * head, int k);
};
En rupture à la ligne, le débogueur me montre les valeurs suivantes:
Pourquoi vous utilisez les appels de bibliothèque C comme 'malloc' en C++? –
http://stackoverflow.com/a/127404/487892 – drescherjm