Иногда случаются вылеты, подскажите как правильно использовать эту функцию, если можно с рабочим, не глючным примером. Code (Text): DWORD __stdcall get_inet_addr(DWORD* lpSin_addr,LPSTR lpszHostName) { DWORD ret=0; hostent *lphost; if((*(DWORD*) lpSin_addr=inet_addr(lpszHostName))==INADDR_NONE) { if((lphost=gethostbyname(lpszHostName))) { *(DWORD*) lpSin_addr=**(DWORD**) lphost->h_addr_list; ret++; } } else { ret++; } return ret; }
видел, но кто может объяснить почему в 95% работает в остальных 5% вылет? использую в цикле, очень часто, в нескольких потоках
Неужели так трудно посмотреть в отладчике адрес исключения? Исходя из того что ты дал, вылететь может, имхо, только если lpSin_addr==нул.
естественно исключение возникает кодом что я влез в недопустимую память, и нулями там не пахнет, проверь у себя код
10_Brasil Простите за поднятие древней темы, но в галимом линуксе gethostbyname не безопасна с точки зрения многопоточности. Там есть какой-то безопасный аналог.