函数代码:
void get_local_addr(char *addr)
{
char hostname[50];
struct hostent *sthost;
struct in_addr inaddr; gethostname(hostname, 255);
sthost = gethostbyname(hostname);
inaddr.s_addr = *((unsigned long *)*sthost->h_addr_list);
}我是这样调用的:
char addr[50];
get_local_addr(addr);调用时出错,说某处的内存不能读,这是怎么回事?
应该怎么改?

解决方案 »

  1.   

    struct hostent *sthost;没初始化和分配内存。
    sthost = gethostbyname(hostname);
    inaddr.s_addr = *((unsigned long *)*sthost->h_addr_list);
    自然会出错。
      

  2.   

    struct hostent *sthost;
    =>
    struct hostent *sthost=new hostent;
    ZeroMemory(sthost,sizeof(hostent));
    后面记得delete.
      

  3.   

    sthost= (HOSTENT*)malloc(sizeof(HOSTENT));
      

  4.   

    呵呵,内存的问题被楼上的抢了.
    Oracle认证的前途远大....
    找工作至少可以8K以上了
      

  5.   

    明显是没分配内存Oracle认证是用钱买的!
    资料费、考试费……总共下来要7、8K吧
    有真本事根本用不着那些东西·
      

  6.   

    你们说的解决方法都不对,还是会出现那个错误,郁闷ing...