Исключительная ошибка во время выполнения при записи в объект

Я сидел здесь часами, пытаясь понять это. Мне не удалось найти подобную проблему (хотя я уверен, что это было сделано). Итак, к моему вопросу. Когда я это компилирую, это нормально.
Я должен добавить, что unsortedList это Book *, который является структурой.

string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;

unsortedList[unsortedArrayLength].title;
unsortedList[unsortedArrayLength].action;
unsortedList[unsortedArrayLength].author;
unsortedList[unsortedArrayLength].subject;
unsortedList[unsortedArrayLength].time;

Однако, когда я компилирую это, я получаю ошибку:
Исключение, выданное в 0x5AC6516F (vcruntime140d.dll) в Assign.exe: 0xC0000005: Место записи нарушения прав доступа 0x00000000.

string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;

unsortedList[unsortedArrayLength].title = tit;
unsortedList[unsortedArrayLength].action = act;
unsortedList[unsortedArrayLength].author = aut;
unsortedList[unsortedArrayLength].subject = sub;
unsortedList[unsortedArrayLength].time = tm;

И тогда всплывает окно memcpy.asm с курсором в этом месте:

CopyUpByteLoop:
mov     al, byte ptr [esi]
mov     byte ptr [edi], al
inc     esi
inc     edi
dec     ecx
jne     CopyUpByteLoop

Определение структуры Book как запрошено:

    struct Book
{
std::string title;
std::string author;
std::string subject;
char* time;
std::string action;
};

Вот полная функция:

    void DB::insertBook(Book* tempBook)
{
using namespace std;
unsortedArrayLength++;
string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;

unsortedList[unsortedArrayLength].title = tit;
unsortedList[unsortedArrayLength].action = act;
unsortedList[unsortedArrayLength].author = aut;
unsortedList[unsortedArrayLength].subject = sub;
unsortedList[unsortedArrayLength].time = tm;

system("cls");

cout << "You have " << unsortedList[unsortedArrayLength].action <<":\n" << endl <<
unsortedList[unsortedArrayLength].title << endl <<
unsortedList[unsortedArrayLength].author << endl <<
unsortedList[unsortedArrayLength].subject << endl <<
"on " << unsortedList[unsortedArrayLength].time << endl << endl;

printToLog(tempBook);
}

Пожалуйста, помогите Оби-Вану. Ты моя единственная надежда…

-2

Решение

Хорошо, я понял это. Я сделал экземпляр массива больше. Оказалось, что я попал в верхние границы массива. Массив был инициализирован с 2, что я, хотя, было бы достаточно, но это не так. Спасибо всем за предоставленные мне знания.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]