發生內存泄漏。代碼有什麼問題?是什麼導致這種內存泄漏?
static sigjmp_buf jmpbuf=NULL;
static void alarm_func()
{
siglongjmp(jmpbuf, 1);
}
static struct hostent *timeGethostbyname(const char *domain, int timeout)
{
struct hostent *ipHostent = NULL;
jmpbuf=malloc(sizeof(sigjmp_buf));
signal(SIGALRM, alarm_func);
if(sigsetjmp(jmpbuf, 1) != 0)
{
alarm(0);
signal(SIGALRM, SIG_IGN);
return NULL;
}
alarm(timeout);//setting alarm
ipHostent = gethostbyname(domain);
signal(SIGALRM, SIG_IGN);
return ipHostent;
}
功能有問題timeGethostbyname
。如果我多次調用函數timeGethostbyname
多次,將發生內存泄漏。 EX:
int main(int argc, char **argv){
char *servers="www.aaa.bbb.tt";
struct hostent *h;
while(1){
h=timeGethostbyname(servers, 2);
}
return(0);
}
使觸發內存泄漏會被刪除,請不要修改你的問題。這使得整個問題變得毫無意義,答案也很混亂(因爲它們涉及的是不是三維的代碼行)。 –