我的代码有一些问题。
void gMenu_BP()
{
CLS // #define system("cls");
cout << "Ive opened my backpack and saw...\n\n";
cout << ":Name\t\tQuantity\t\tPrice\n\n";
for (int i = 0; i < sizeof(Items); i++)
{
try{
if(Items[i].owd==1)
{
cout <<i+1<<">"<<Items[i].Name<<"\t"<<Items[i].q<<"\t\t\t"<<Items[i].price<<endl;
}
}
catch(exception ex) {
cout << "error";
}
}
//cout<<"====================================================";
cout <<"1.Use Item\n2.Remove Item\n3.Back to Journey";
int volba01;
cin >> volba01;
}
它的作用是显示所有者 ID 为 1 的所有对象。所有对象都将写入控制台。我的问题是这样的:
Unhandled exception at 0x00C3A2CA in Journey.exe:
0xC0000005: Access violation reading location 0x00C4702C.
即使在 VC++ 之外,它也会崩溃。请注意,我这工作得很好,但后来我开始遇到文本渲染问题(每 80 万个字符)。然后我禁用了一些与 printf() 相关的功能;然后错误甚至在这里开始抛出。像病毒什么的。在异常情况下,它会显示 VC++ output.c 文件和其他一些系统文件。我不知道该怎么做,迁移到 C# 会有点困难。
编辑:好的,现在可以了。我已将 for-loop 标头更改为
for (int i = 0; i < sizeof(Items)/sizeof(player.Items[0]); i++)
这是一个奇怪的解决方案,但效果很好。