Итак, я пытаюсь переписать старый класс памяти, который я сделал некоторое время назад, но наткнулся на некоторые проблемы в инструкции strcmp. Это моя SaveModules функция:Сохранение и загрузка моих модулей
void Memory::AddModuleToList(char* modSaveName, LPSTR ModName, int num)
{
this->Modules[num] = this->Module(ModName);
this->modNames[num] = modSaveName;
}
И это, как я загрузить их:
DWORD Memory::LoadSavedModule(char* modName) {
for (int i = 0; i < 128; i++) {
if (strcmp(modName, modNames[i])) {
return Modules[i];
};
}
}
Причина я Переберите 128, потому что мой модули массив имеет 128 слотов. Теперь проблема с моим кодом заключается в том, что strcmp вызывает точку останова с ошибкой follolwing;
Access violation reading location 0xCDCDCDCD.
(Full Error)
Unhandled exception at 0x0FAF1F52 (msvcr110d.dll) in Memory Test.exe: 0xC0000005: Access violation reading location 0xCDCDCDCD.
EDIT (2015-05-13): Я думаю, что, возможно, только понял это, мои модули [128] не определено везде, кроме Num, так при использовании strcmp он не может сравниться и выдает исключение, правильно ли я прав?
Как я ее решил:
void Memory::AddModuleToList(char* modSaveName, LPSTR ModName, int num, bool firstTime)
{
if (firstTime) {
for (int i = 0; i < 128; i++) {
this->modNames[i] = "";
this->Modules[i] = 0;
};
};
this->Modules[num] = this->Module(ModName);
this->modNames[num] = modSaveName;
}
Как модули [] инициализированы? Похож на неинициализированный указатель ... – Vinzenz