C# 读取内存时发生随机错误

C# 读取内存时发生随机错误,c#,C#,我正在制作一个涉及内存读取的程序,有时在尝试读取内存时会出现问题。调试器告诉我错误在IF条件下,所以我认为我的问题是内存获取的随机值(可能是带有字母的东西,由于我试图读取整数,它崩溃了?) if(Convert.ToInt32(mem3.ReadPointer(address3))>=1&&Convert.ToInt32(mem3.ReadPointer(address3))我建议改为使用TryParse。如果这确实是您的问题(尽管使用随机内存..如果没有更多上下文,很难判断问题是什么): in

我正在制作一个涉及内存读取的程序,有时在尝试读取内存时会出现问题。调试器告诉我错误在IF条件下,所以我认为我的问题是内存获取的随机值(可能是带有字母的东西,由于我试图读取整数,它崩溃了?)


if(Convert.ToInt32(mem3.ReadPointer(address3))>=1&&Convert.ToInt32(mem3.ReadPointer(address3))我建议改为使用
TryParse
。如果这确实是您的问题(尽管使用随机内存..如果没有更多上下文,很难判断问题是什么):

int-val;
if(int.TryParse(mem3.ReadPointer(address3),out val)){
//一切正常,继续使用val

如果(val>=1&&val我的指针转换为int返回指向地址的值。感谢您的代码,我将尝试重现该问题。好的,我没有崩溃,而是得到了“类型为'System.IndexOutOfRangeException'的第一次机会异常…”在调试控制台中,我认为您给我的代码解决了崩溃问题。您在这里提供的内容中没有任何内容会导致崩溃。所以我想这解决了您的第一个问题:)Woops,我做错了,问题没有解决。“tryparse行中的mscorlib.dll中发生了类型为“System.OverflowException”的未处理异常。好的。将ReadPointer的结果存储在tryparse之前的变量中。会发生什么?该变量是什么类型?
if (Convert.ToInt32(mem3.ReadPointer(address3)) >= 1 && Convert.ToInt32(mem3.ReadPointer(address3)) <= 100)
    label5.Text = "LVL " + mem3.ReadPointer(address3).ToString();
int val;
if (int.TryParse(mem3.ReadPointer(address3), out val)) {
    // all good, continue using val
    if (val >= 1 && val <= 100) // ...
}
else {
    // failed conversion
}