读取内存时出现随机错误

时间:2014-05-02 04:26:26

标签: c#

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

if (Convert.ToInt32(mem3.ReadPointer(address3)) >= 1 && Convert.ToInt32(mem3.ReadPointer(address3)) <= 100)
    label5.Text = "LVL " + mem3.ReadPointer(address3).ToString();

我的问题是,如果某个值超出范围,是否有一种方法可以跳过代码(在本例中为if)?

1 个答案:

答案 0 :(得分:0)

我建议使用TryParse来代替..如果这确实是你的问题(尽管使用随机内存...很难说没有更多上下文可能会出现问题):

int val;
if (int.TryParse(mem3.ReadPointer(address3), out val)) {
    // all good, continue using val
    if (val >= 1 && val <= 100) // ...
}
else {
    // failed conversion
}

如果您在64位计算机上运行,​​那么您可能希望将指针值存储在long而不是int ...所以它不会溢出。

编辑:

ReadPointer返回什么?一个完整的内存地址或地址的值?现在我已经重新阅读了你的问题,我并不完全确定你所追求的是什么(但为了以防万一我会留在这里)。