none
Access Violation RRS feed

  • 问题

  • 我用VS2005

    按下F5

    console输出

    char* Content == NULL

    之后停止工作

    并弹出一个AV错误:

    Unhandled exception at 0x1022fb10 (msvcr80d.dll) in Kta2.6Encod.exe: 0xC0000005: Access violation reading location 0x00000000.

    在debug模式下弹出strlen.asm文件, 说明错误出现在使用strlen这个函数的时候,原因应该是指针Content没有被赋值。

    -------------------------------

    我找到错误在下面的代码中,这段代码是读取文件内容的

     

     

    void initParam(char* ConfigFileName)

    {

    char* Content;

    Content = GetConfigFile(ConfigFileName);

    printf ("Parsing Configfile %s", ConfigFileName);

    if(Content == NULL)

    printf("char* Content == NULL \n");

    ParseConfigFile(Content, strlen(Content));

    free(Content);

    Content = NULL;

    printf("%s", "#######################################################################\n");

    printf("# color_dist_thre = %f lumi_dist_thre = %f\n", Kta->color_dist_thre, Kta->lumi_dist_thre);

    printf("%s", "#######################################################################\n");

    }

     

    奇怪的是,我双击生成的exe文件,却是可以成功运行的。也就是指针Content是成功被赋值的。需要读取的文件也是存在的,而且被正确读取的。

    这是为什么呢?

     

    谢谢

    2010年4月5日 13:08

答案

  • Debug 的默认当前目录不是 项目文件夹\bin\debug  请把 配置文件放到项目文件夹下,再测试。
    • 已标记为答案 Nancy Shao 2010年4月7日 6:42
    2010年4月5日 23:09
    版主

全部回复

  • 检查一下你ConfigFileName 中含有的文件名和路径,是否有对应的文件存在? GetConfigFile 函数是否能正常打开配置文件?
    2010年4月5日 15:05
    版主
  • 检查一下你ConfigFileName 中含有的文件名和路径,是否有对应的文件存在? GetConfigFile 函数是否能正常打开配置文件?

    和exe文件放在同一个文件夹下的啊

    我运行exe文件,都是可以运行的,就是在vs2005里面用F5去debug的时候,出现了这个问题

     

    2010年4月5日 16:13
  • Debug 的默认当前目录不是 项目文件夹\bin\debug  请把 配置文件放到项目文件夹下,再测试。
    • 已标记为答案 Nancy Shao 2010年4月7日 6:42
    2010年4月5日 23:09
    版主
  • Debug 的默认当前目录不是 项目文件夹\bin\debug  请把 配置文件放到项目文件夹下,再测试。

    您说的对,我刚刚发现了,原来在VS2005中

    debug模式下的working dir默认为存贮Project的文件夹,我还以为是debug文件夹。

    我修改了以后,就可以了!

    谢谢啊!

    2010年4月6日 13:48