C++ 储蓄及;加载我的模块
所以我正试图重写前一段时间制作的旧内存类,但在strcmp语句中遇到了一些问题。 这是我的SaveModules功能:C++ 储蓄及;加载我的模块,c++,strcmp,C++,Strcmp,所以我正试图重写前一段时间制作的旧内存类,但在strcmp语句中遇到了一些问题。 这是我的SaveModules功能: void Memory::AddModuleToList(char* modSaveName, LPSTR ModName, int num) { this->Modules[num] = this->Module(ModName); this->modNames[num] = modSaveName; } 这就是我加载它们的方式:
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];
};
}
}
(完全错误)
编辑(2015-05-13):
我想我可能已经弄明白了,除了Num,我的模块[128]在任何地方都没有定义,所以当使用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;
}
void Memory::AddModuleToList(char*modSaveName、LPSTR ModName、int num、bool firstTime)
{
如果(第一次){
对于(int i=0;i<128;i++){
此->模块名称[i]=“”;
该->模块[i]=0;
};
};
此->模块[num]=此->模块(ModName);
此->modNames[num]=modSaveName;
}
您没有初始化模块
数组-该值0xCDCDCDCD
是C运行时系统放在那里的一个标志,表示内存未初始化。模块[]是如何初始化的?看起来像一个未初始化的指针…只是我添加的编辑,当我想得更多时,我意识到,对不起。
Unhandled exception at 0x0FAF1F52 (msvcr110d.dll) in Memory Test.exe: 0xC0000005: Access violation reading location 0xCDCDCDCD.
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;
}