编译连接没有任何问题  运行时报 
Run-Time Check Failure #3 - The variable 'addrf' is being used without being initialized.
        osip_message_t *invite=NULL; eXosip_lock();
int ret = eXosip_call_build_initial_invite (&invite, strFrom,strTo, NULL, NULL);
eXosip_unlock(); if (ret<0)
{
return -1;
} if(pszSDP!=0&&*pszSDP!=0)
{
osip_message_set_body (invite, pszSDP, strlen(pszSDP));
osip_message_set_content_type (invite, "application/sdp");
}
就是红色的这一行  我的程序中根本就没有 addrf 这个变量, 怎么报这个堆栈检查错误呢,郁闷呀.

解决方案 »

  1.   

    大哥我重新编译 了N次了   本来没有问题的,我打一个VS2005 SP1补丁就出这么多问题,郁闷呀!~
      

  2.   

    同意楼上的,看你的代码确实没有这个变量,如果不是因为你的代码中有误写的地方,那么就是由于你修改后没有rebuild all
      

  3.   

    变量没初始化就使用了,有eXosip类的源码吗?
      

  4.   

    这种问题一般是由于内存重叠或超出访问范围导致的, 比如说你声明两个变量,char str[100];
    int  ret = 0;// 有可能在有些地方对 str 的操作超出了str的大小,导致一些变量或函数堆栈内存被覆盖。
    memset( str, 0, 1000 );
    或者 xxfunc( str ); xxfunc 中对str的操作超过了指定的内存界限,却还在当前应用程序可访问的范围内。你以前的编译器可以用,而现在不可用,以及在DEBUG版本中可用,RELEASE中不可用,应该是一些变量没有初始化赋值导致的。
    不同的编译器对未赋值变量初始化不一样。
      

  5.   

    osip_message_t *invite=NULL;int ret = eXosip_call_build_initial_invite (&invite, strFrom,strTo, NULL, NULL);
    你的 invite 指针初始化为NULL,没有分配内存
    然后你又在 函数里对 invite 做 取地址操作,不错才怪
      

  6.   

    哦   看错了   eXosip_call_build_initial_invite  第一个参数是 osip_message_t ** 类型吗?
    那你要stepinto进去调试了
      

  7.   

    问题解决了  是exosip协议栈的问题   NND, 里面有一个addrf获取IPP4或IPV6地址的变量没有初始化。谢谢名位回复!
      

  8.   

    给你个例子你看看
    char *a;
    char &b=*a;
    编译通过运行时报你说的那个错误。看一下引用和指针的用法吧 。我才你可能是引用赋空值了。