zoukankan      html  css  js  c++  java
  • 错误error: Exception at 0x613baa14, code: 0xc0000005: read access violation at: 0x0, flags=0x0 (first chance)的解决办法

    一.错误原因

    出现这个错误的原因多半是由于指针出现错误,即出现了空指针,也有说是变量没有初始化,笔者碰到的情况是发生了内存溢出。

    二.定位方法

    一般这种问题直接导致程序崩溃,直接调试,就能找到对应的问题函数A,仔细检查一下指针变量就能找到原因。事实上有可能出现问题的地方并不是报错的函数A,笔者出现的问题就是,报错的函数A中调用的另一个函数B出现了问题,最后B调用结束,才抛出错误,所以调试器将错误定位到了函数A中B调用结束的下一行。

    三.具体错误

    在函数B中,笔者使用了sscanf_s(ptr,"%d",&num) 函数,为了节省空间,num申请的是unsigned char类型。事实上正是这个函数出现了问题,%d默认传入的变量是int类型,因此导致了内存溢出。这种问题需要编程时多加注意。

    附: 关于sscanf_s的陷阱

    ``` #include typedef struct AA { unsigned char a; unsigned char b; }SAA; int main(int argc, char *argv[]) { SAA var; char s[]="10"; var.a=1; var.b=2; sscanf_s(s,"%hhu",(unsigned char*)&var.a,sizeof(var.a));//在给var.a赋值时,影响了var.b printf("%hhu %hhu",var.a,var.b);//预期输出10 2,实际输出10 0; return 0; } ``` 这个可能与编译器有关,sscanf_s处理%hhu仍当4个字节出处理,故覆盖了var.b的值,可使用int型中间变量解决这个问题。
  • 相关阅读:
    Shell脚本笔记(二)Shell变量
    Shell脚本笔记(三)shell中的数学计算
    Shell脚本笔记(五)Shell函数
    Shell脚本笔记(四)条件判断
    Kotlin基础(五)Kotlin的类型系统
    Kotlin基础(四)Lambda编程
    Kotlin基础(三)类、对象和接口
    Kotlin基础(二)函数的定义与调用
    Kotlin基础(一)Kotlin快速入门
    第四周学习进度
  • 原文地址:https://www.cnblogs.com/yixu/p/10266218.html
Copyright © 2011-2022 走看看