none
visual studio .NET编译后调试程序运行结果与独立执行编译好的可执行文件的结果不同,是什么原因? RRS feed

  • 问题

  • 我使用vs2005 编写了一个MFC的Windows应用程序,用来搜索光盘文件目录信息,并且把搜索的结果存放在XML中,并且编写了搜索该XML文档的模块用于以后查找文件,也就是说给一个关键词,程序就能据此给出相关文件的目录信息。

    在vs2005环境中调试正常运行,不会出现任何问题;然而当我直接运行编译好的exe文件时,发现此时如果给的关键词较长程序就会崩溃,而在调试过程中使用同样的关键词程序却不会崩溃,这是为什么。

    期待你的答案。

    2010年8月13日 8:38

答案

  • 你好,

    这是由于debug模式和release模式处理变量内存时稍有不同。通常在debug模式下编译器会帮我们初始化内存地址(赋值0),而在release模式下,他会保持此内存块在分配之前所保留的内容。当程序运行时,如果没有对变量进行适当的初始化,在debug模式下可能还好(因为自动为0),在release下则可能造成诸如非法访问的错误导致程序奔溃。所以强烈建议你复查你的代码,尤其在出问题的代码块,是否有类似情况存在。

    谢谢

    Yi


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年8月17日 8:32
    版主

全部回复

  • 你好,

    这是由于debug模式和release模式处理变量内存时稍有不同。通常在debug模式下编译器会帮我们初始化内存地址(赋值0),而在release模式下,他会保持此内存块在分配之前所保留的内容。当程序运行时,如果没有对变量进行适当的初始化,在debug模式下可能还好(因为自动为0),在release下则可能造成诸如非法访问的错误导致程序奔溃。所以强烈建议你复查你的代码,尤其在出问题的代码块,是否有类似情况存在。

    谢谢

    Yi


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年8月17日 8:32
    版主
  • 你好

    谢谢你的帮助。我想问我应该如何设置我的项目,使得在调试的时候程序是以release模式运行的,以便我能够发现是哪个变量出现了问题。

    2010年8月21日 1:38