我用VC开发一个控件。在控件中,有可能出现许多错误,甚至严重错误,比如除零,浮点溢出等。但为什么我在VC中运行或者甚至DEBUG的时候,总是没有错误提示我?
而当我把控件发布,在其它开发工具比如Delphi里面用这个控件的时候,就报Divide by Zero之类的各种错误?请高手指点迷津,不胜感谢。

解决方案 »

  1.   

    我用的是VC6
    Debug环境是Activex Control Test Container
      

  2.   

    在DEBUG中,除0是不报错的,浮点溢出不一定报错,有时是逻辑出错引起的。
    所以,你用RELEASE版本试试。这可能算是VC的容错的能力强呢。呵呵。
      

  3.   

    VC中除0是有结果的,叫inf,意思是无穷,主要是为了防止程序崩溃,其他编译器可能没有特殊处理就出错了!
      

  4.   

    这是c/C++的原因,缓冲区溢出时数据会溢出到内部存储器空间,程序有可能不会报错的。你可以比较以下两段程序就可进行缓冲区溢出的防御:危险代码:
    void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) 
    {
    char cBuffDest[32];
    memcpy(cBuffDest,cBuffSrc,cbBuffSrc);
    }  安全代码:
    void DoSomething(char *cBuffSrc, DWORD cbBuffSrc) {
    const DWORD cbBuffDest = 32;
    char cBuffDest[cbBuffDest];
    #ifdef _DEBUG
    memset(cBuffDest, 0x33, cbBuffSrc);
    #endif
    memcpy(cBuffDest, cBuffSrc, min(cbBuffDest, cbBuffSrc));
    }
      

  5.   

    Release版本也不报错。
    只有到其它工具(现为Delphi)开发的软件运行后才会报错。这可如何是好。
    我现在有上万行代码,复杂的逻辑,我该如何查啊。我已经跟踪调试几天了,还是会偶尔有错。大家帮我出出主意,我该怎样Find my Bugs ?
      

  6.   

    vc可能优化了你的c++语法错误。