none
vc2008 SDI程序view类中成员缺省值 RRS feed

  • 问题

  • 大家好,

    编程很多年,一些常见的编译器也都用过。最近vs2008碰到一个很奇怪的问题,也许可以查到内存泄露等bug的原因。

    单文档SDI程序,View类成员定义了一些int,BOOL等变量。这些变量缺省值(如果不主动初始化)应该都是0(FALSE),但是只有一个变量的缺省值是180224(假如变量是a),感觉很奇怪。我把两个BOOL变量定义的位置调换了一下,如下,

    BOOL a;

    BOOL b;

    调换成

    BOOL b;

    BOOL a;

    结果b的缺省值变成了180224,而a的缺省值变成了0. 

    我是在OnEraseBkgnd中加的调试代码。

    请问大家遇到过吗,谢谢!

    2014年11月17日 10:17

全部回复

  • 你好:

        C++里 int 或BOOL等变量如果没有初始化缺省值应该是-842150451这样的未预期值,不要让编译器帮你初始化,永远初始化你的变量。不知为何你的变量缺省值是180224,如果是静态变量static,缺省值是0,也就是false。

         也许你可以做个小sample来重现你的问题,让我们能更好的理解你的问题。

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年11月18日 7:30
  • 你好,谢谢。

    我这是一个很大的工程,有很多各种类型的成员变量,所以一个小小的sample可能无法重现,我担心是内存泄露造成的问题,之前有弹出过貌似内存泄露的对话框。

    程序很可能有内存泄露,但是这个180224的缺省值貌似不是内存泄露造成的。因为我在第一次调用OnEraseBkgnd的开始处设置的断点,这时还基本没有什么变量操作。

    刚才试了一下release版本,所有类成员变量的缺省值都是0(int,bool,指针,结构,数组,甚至包括MFC定义的一些类型变量),但是debug版本中,唯独在某个位置定义的那个变量缺省值是180224, 其他也都是0.

    补充一点:vc2008开发的wince 5程序。

    wince6不知道是否也是这样,等条件具备了测试一下再来说结果。

    根据现在的条件,能判断可能的原因吗?

    再次非常感谢!

    2014年11月19日 12:21
  • 定义的时候请给变量初始化一个值。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2014年11月25日 3:58
    版主