保存和加载我的模块

Saving & Loading my modules

本文关键字:模块 我的 加载 保存      更新时间:2023-10-16

所以我试图重写我前一段时间的旧内存类,但绊倒了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.

(完整错误)

Unhandled exception at 0x0FAF1F52 (msvcr110d.dll) in Memory Test.exe: 0xC0000005: Access violation reading location 0xCDCDCDCD.

编辑(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;
}

您不是初始化Modules数组 - 该值0xCDCDCDCD是由C运行时系统放置的标志,以发出信号,以发出信号。