我用下面这一段代码来获本地主机名,在Debug下能得到本地主机名,可在Release下却没点反应了,这是怎么回事呢,请大虾指点。char cHost[256];
if (gethostname(cHost, strlen(cHost)) == 0)
{
AfxMessageBox((CString)cHost);
}

解决方案 »

  1.   

    你看看chHost的内容在DEBUG和Release下有何不同?
    注意变量初始化!尤其是字符串和指针变量。
      

  2.   

    不要用 strlen(cHost),直接用256
      

  3.   

    不会吧~
    应该不会出现这种错误的~~~
    我曾经也写过网络管理软件,也用到该函数,先是为:DEBUG下面没有问题,在Release下面也没有问题啊?
    不知道你是怎么出现这种问题的~~
      

  4.   

    hewok() 
    按你提供的方法,问题解决了,不过我还是不太清楚为什么会这样呢?能不能给我解释一下,先谢过了。
      

  5.   

    char cHost[256]; //分配了256字节的空间,用来存放数据,但其内容为未知数据
    strlen(cHost)) //获取以0结尾的字符串的长度,但由于cHost内容为未知,所以长度未知....比较安全的写法为:
    char cHost[256]={0};
    if (gethostname(cHost, sizeof(cHost)) == 0)
    {
    AfxMessageBox((CString)cHost);
    }
      

  6.   

    因为你的buffer没有初始化。strlen需要参数是Null-terminated的。养成好习惯,声明之后就初始化:char cHost[256] = {0};还有,debug下没问题是因为debug自动给你初始化了,而release不会。