Arrays C+中的访问冲突写入位置0x00000000错误+;

Arrays C+中的访问冲突写入位置0x00000000错误+;,arrays,pointers,Arrays,Pointers,我一直在尝试实现一个库系统代码。然而,每当我尝试将对象传递给数组时,我都会得到 访问冲突写入位置0x00000000 Visual Studio 2013中出现错误 这是我的密码 LibrarySystem.cpp static int bookSize = 0; static int studentSize = 0; LibrarySystem::LibrarySystem() { books = NULL; students = NULL; } LibrarySystem:

我一直在尝试实现一个库系统代码。然而,每当我尝试将对象传递给数组时,我都会得到

访问冲突写入位置0x00000000

Visual Studio 2013中出现错误

这是我的密码 LibrarySystem.cpp

static int bookSize = 0;
static int studentSize = 0;

LibrarySystem::LibrarySystem()
{
    books = NULL;
    students = NULL;
}
LibrarySystem::~LibrarySystem()
{
}

void LibrarySystem::addBook(const int bookId, const string name, const string authors, const int year){
    bool checkBook = false; //checks whether the book is in the list

    Book *tempBooks = new Book[bookSize++];

    Book newBook;
    if (bookSize == 1) {
        newBook.setBookId(bookId);
        newBook.setBookName(name);
        newBook.setAuthors(authors);
        newBook.setYear(year);
    }
    tempBooks[bookSize - 1] = newBook;
    cout << tempBooks[1].getAuthors(); // To testing. This is where execution stops
    }
}
static int bookSize=0;
静态int studentSize=0;
LibrarySystem::LibrarySystem()
{
books=NULL;
学生=空;
}
LibrarySystem::~LibrarySystem()
{
}
void LibrarySystem::addBook(常量整数bookId、常量字符串名称、常量字符串作者、常量整数年份){
bool checkBook=false;//检查该书是否在列表中
Book*tempBooks=新书[bookSize++];
新书;
if(bookSize==1){
newBook.setBookId(bookId);
newBook.setBookName(名称);
newBook.setAuthors(作者);
newBook.setYear(年);
}
tempBooks[bookSize-1]=新书;
coutC(和C++)数组索引是基于零的

cout << tempBooks[0].getAuthors();

cout您的数组由

Book *tempBooks = new Book[bookSize++];
bookSize++
将计算为
bookSize
的当前值,即0


如果要计算为递增后的值,请使用
++bookSize

tempBooks[1]
此时可能未初始化为任何值。您的意思可能是
tempBooks[0]
?它不起作用。仍然存在这个错误。每当调用函数时,我都想增加tempBook数组的大小,但tempBook是一个局部变量。您所拥有的没有多大意义。请花点时间编写一个最小的代码示例,即:删除不需要的代码(什么是LibrarySystem?)直到只剩下导致数组的代码为止。例如,我将您的代码缩减为:用于测试它。通常,您会在缩减过程中发现错误。@BurakKantarcı-警告一句:看起来它正常工作,但事实并非如此。您的
tempBook
数组是一个局部变量,不会更改,而是在一段时间内创建的我将把它们添加到另一个数组中,书将指向这个数组。这将是我的下一步coding@LeonardoHerrera另外,它会产生内存泄漏。在C++中,您将希望使用<代码> STD::vector < /CODE>为您管理内存管理。@ MICYE这是一个类项目,不幸的是,我被禁止使用vector类。@BurakKantarcı-如果这是一个类项目,那么就有更多的理由使用
main()
包括在内,因此人们会倾向于复制和粘贴您的代码,并对其进行修补。一旦您开始这样做,您将得到更好的答案。避免在我们不得不求助于心理调试的地方发布问题!