编译器: VS.NET 2003
打开优化内联函数展开, 运行程序就出现无法访问0x000005.....内存错误
跟踪调试了一下,发现问题很奇怪,都是调用些内联函数出错,找不到原因
这些内联函数都是一句代码:return this->m_xxxx,确认this指针没有问题。能否知道哪里的原因?

解决方案 »

  1.   

    我碰到过不能编译的情况,但你这种情况不太清楚
    内联函数无非告诉编译器编译的时候直接CODE COPY,而不是编译之后运行时函数调用,检查是否有其他问题
      

  2.   

    0x000005?应该还一个地址吧,根据它和.map文件就可以定位源代码了。(我也用2003)
      

  3.   

    会不会有this指针被错置的情况??
      

  4.   

    在不开优化的情况下就没有问题,且工程比较大,和出错部分的代码应该没有关系。
    具体错误:
    tool.exe 中的 0x0041a855 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突 。
    大致代码如下:
    .h file:
    const string &Name(void) const { return this->m_Name; }.cpp file:
    this->m_bFocus = true;  //<----不出错,this指针没问题
    if( this->Name().Length() == 0 ); //<----出错
       .....
    有那些可能会导致这情况?
      

  5.   

    我的意思是内联函数中的this指针被做了其他解释
      

  6.   

    m_Name是局部变量还是全局变量
      

  7.   

    你的INLINE在什么地方被调用,在类的内部?也就是说可以是PUBLIC的还是PRIVATE
    如果是PUBLIC的时候,this可能有问题哦,因为是代码替代啊
      

  8.   

    这种成员,没有必要的情况下,不要使用this来引用