C++ 有些指针有问题,调试结束时访问位置失败
它就像时钟一样工作,在我编译之后,我从键盘输入了一些信息,最后我得到了一个大错误,比如“Acces违规读取0000000 1C” 为什么?我尝试了其他方法,比如用新操作符分配动态内存,我尝试了很多方法,但最后我发现这个错误或者键入“example”与“example”不匹配。C++ 有些指针有问题,调试结束时访问位置失败,c++,list,pointers,stl,C++,List,Pointers,Stl,它就像时钟一样工作,在我编译之后,我从键盘输入了一些信息,最后我得到了一个大错误,比如“Acces违规读取0000000 1C” 为什么?我尝试了其他方法,比如用新操作符分配动态内存,我尝试了很多方法,但最后我发现这个错误或者键入“example”与“example”不匹配。 对不起,我的英语拼写不好,但在这个程序中,我只想制作一个阅读杂志和书籍的程序,并存储到一个名为“biblioteca”的图书馆,“carte”表示书籍,“Reviste”表示杂志。。。我希望它被存储在一个列表中,因为我需要
对不起,我的英语拼写不好,但在这个程序中,我只想制作一个阅读杂志和书籍的程序,并存储到一个名为“biblioteca”的图书馆,“carte”表示书籍,“Reviste”表示杂志。。。我希望它被存储在一个列表中,因为我需要插入元素或删除我选择的任何书籍或杂志…以及我想要保存在文件中的所有信息,例如“out.txt”或“in.txt”崩溃是因为迭代器在
(*I)->inTitlu(carti)行为NULL
代码>
问题在于方法:
void Carti::insertMyBook()
{
Carti carti;
for (i = books.begin(); i != books.end(); i++)
{
carti.readBook();
(*i)->inTitlu(carti);
(*i)->inEditura(carti);
(*i)->inAn(carti);
(*i)->inTiraj(carti);
(*i)->inAutor(carti);
books.insert(i, *i);
}
}
书籍包括:
Carti::Carti()
{
books.resize(1);//one book
}
listbooks;
您试图将Carti的列表调整为1,但由于您有一个指向Carti对象而非Carti对象的指针列表,因此调整大小操作不会通过调用Carti对象的构造函数创建Carti对象,而是通过调用指针创建Carti对象
除了设计和编码方面存在的主要问题外,使用Carti对象存储指向Carti对象的其他指针列表肯定不是一个好主意。您可以考虑创建另一个“保持”类来存储您创建的Carti的列表。 崩溃是因为迭代器在(*i)->inTitlu(carti)行为NULL
代码>
问题在于方法:
void Carti::insertMyBook()
{
Carti carti;
for (i = books.begin(); i != books.end(); i++)
{
carti.readBook();
(*i)->inTitlu(carti);
(*i)->inEditura(carti);
(*i)->inAn(carti);
(*i)->inTiraj(carti);
(*i)->inAutor(carti);
books.insert(i, *i);
}
}
书籍包括:
Carti::Carti()
{
books.resize(1);//one book
}
listbooks;
您试图将Carti的列表调整为1,但由于您有一个指向Carti对象而非Carti对象的指针列表,因此调整大小操作不会通过调用Carti对象的构造函数创建Carti对象,而是通过调用指针创建Carti对象
除了设计和编码方面存在的主要问题外,使用Carti对象存储指向Carti对象的其他指针列表肯定不是一个好主意。您可以考虑创建另一个“保持”类来存储您创建的Carti的列表。 崩溃是因为迭代器在(*i)->inTitlu(carti)行为NULL
代码>
问题在于方法:
void Carti::insertMyBook()
{
Carti carti;
for (i = books.begin(); i != books.end(); i++)
{
carti.readBook();
(*i)->inTitlu(carti);
(*i)->inEditura(carti);
(*i)->inAn(carti);
(*i)->inTiraj(carti);
(*i)->inAutor(carti);
books.insert(i, *i);
}
}
书籍包括:
Carti::Carti()
{
books.resize(1);//one book
}
listbooks;
您试图将Carti的列表调整为1,但由于您有一个指向Carti对象而非Carti对象的指针列表,因此调整大小操作不会通过调用Carti对象的构造函数创建Carti对象,而是通过调用指针创建Carti对象
除了设计和编码方面存在的主要问题外,使用Carti对象存储指向Carti对象的其他指针列表肯定不是一个好主意。您可以考虑创建另一个“保持”类来存储您创建的Carti的列表。 崩溃是因为迭代器在(*i)->inTitlu(carti)行为NULL
代码>
问题在于方法:
void Carti::insertMyBook()
{
Carti carti;
for (i = books.begin(); i != books.end(); i++)
{
carti.readBook();
(*i)->inTitlu(carti);
(*i)->inEditura(carti);
(*i)->inAn(carti);
(*i)->inTiraj(carti);
(*i)->inAutor(carti);
books.insert(i, *i);
}
}
书籍包括:
Carti::Carti()
{
books.resize(1);//one book
}
listbooks;
您试图将Carti的列表调整为1,但由于您有一个指向Carti对象而非Carti对象的指针列表,因此调整大小操作不会通过调用Carti对象的构造函数创建Carti对象,而是通过调用指针创建Carti对象
除了设计和编码方面存在的主要问题外,使用Carti对象存储指向Carti对象的其他指针列表肯定不是一个好主意。您可以考虑创建另一个“保持”类来存储您创建的Carti的列表。 我真的搞不清楚发生了什么,因为你的代码很乱。然而,访问冲突通常表示您正在取消引用无效的指针/迭代器。另外,为什么不在for循环中声明i
?您所询问的代码看起来就像是在用您刚读过的书替换库中的每一本书。您可能需要仔细检查一下您的逻辑。而且在开始测试之前编写更少的代码会使错误查找变得更容易。顺便说一句,除非你的老师明确要求,否则你应该避免在列表中存储指针。我认为你需要编写者来处理列表,你可以像向量容器一样增加一个简单的变量“i”来编写列表?只要你有访问冲突“…读/写0x000000NN”它几乎总是意味着您试图取消对空指针的引用,几乎总是指向一个结构或类对象,而被取消引用的成员位于前面提到的偏移量处。在您的例子中,偏移量是1C
,或者28字节(看起来是Carti
。因为您的代码中没有任何地方实际为列表中不明智的指针分配内存,这将解释很多。在这种情况下,您建议怎么做?如何做?(*i!=Null)这样做?我真的不知道发生了什么,因为你的代码非常混乱。但是,访问冲突通常表明你正在取消引用无效的指针/迭代器。另外,为什么不在for循环中声明I
?你询问的代码看起来好像正在用你刚读过的书替换库中的每一本书。你不知道吗ght希望检查一下您的逻辑。在开始测试之前编写更少的代码会使错误查找变得更容易。顺便说一句,除非您的老师明确要求,否则您应该避免在列表中存储指针。我认为您需要编写器来处理列表,您可以增加一个简单的变量,如“i”“要像矢量容器一样使用列表吗?只要您的访问权限违反了表单”…读取/写入0x000000NN”它几乎总是意味着您试图取消对空指针的引用,几乎总是指向结构或类对象,并且被取消引用的成员位于前面提到的偏移量处