当前位置: 技术问答>linux和unix
段错误的提示····怎么解决?
来源: 互联网 发布时间:2016-09-30
本文导语: 用libevent写简单的服务器··· void sock_read() { printf("start sock_readn"); int getVipDomains(); printf("start getn"); getVipDomains(); printf("end getn"); } /*下边两个函数正常,不正常的是上边的以及要调用的函数···*/ static void...
用libevent写简单的服务器···
void sock_read()
{
printf("start sock_readn");
int getVipDomains();
printf("start getn");
getVipDomains();
printf("end getn");
}
/*下边两个函数正常,不正常的是上边的以及要调用的函数···*/
static void sock_accept(int server_socket,short event,void *arg,int new_server_socket)
{```}
int main ()
{```}
/*下边是要调用的函数*/
int getVipDomains() //数据库查询发送部分
{
int *new_server_socket; ////////////////////好像就是定义这个的时候出问题了···
char buffer[500];
···//链接数据库正常···查询正常···下边发送不正常了···
printf("start sendn");
int ss = send(*new_server_socket,buffer,strlen(buffer),0);
printf("ss=%dn",ss);
}
send(*new_server_socket,"over",strlen("over"),0);
mysql_free_result(result);
mysql_close(&db);
fprintf(stdout,"Read: %sn", buffer);
close(*new_server_socket);
}
//如果将数据库部分查询发送部分直接放在void sock_read() 函数下,即不要getVipDomains()这个函数名,发送数据是没问题的,
但是把数据库部分拿出来单独用个函数getVipDomains()来放,再调用这个函数,如上边的那样···到 printf("start sendn");之后就出现 段错误 的提示···数据发不过去了···
但是如果我将 int *new_server_socket; 放在函数名里边 就是改成:int getVipDomains(int *new_server_socket)
然后就提示
ss=-1
```
貌似跳过send部分了,数据没发送过去···
请问下,···我该怎么改才能正确的将数据发过去···
void sock_read()
{
printf("start sock_readn");
int getVipDomains();
printf("start getn");
getVipDomains();
printf("end getn");
}
/*下边两个函数正常,不正常的是上边的以及要调用的函数···*/
static void sock_accept(int server_socket,short event,void *arg,int new_server_socket)
{```}
int main ()
{```}
/*下边是要调用的函数*/
int getVipDomains() //数据库查询发送部分
{
int *new_server_socket; ////////////////////好像就是定义这个的时候出问题了···
char buffer[500];
···//链接数据库正常···查询正常···下边发送不正常了···
printf("start sendn");
int ss = send(*new_server_socket,buffer,strlen(buffer),0);
printf("ss=%dn",ss);
}
send(*new_server_socket,"over",strlen("over"),0);
mysql_free_result(result);
mysql_close(&db);
fprintf(stdout,"Read: %sn", buffer);
close(*new_server_socket);
}
//如果将数据库部分查询发送部分直接放在void sock_read() 函数下,即不要getVipDomains()这个函数名,发送数据是没问题的,
但是把数据库部分拿出来单独用个函数getVipDomains()来放,再调用这个函数,如上边的那样···到 printf("start sendn");之后就出现 段错误 的提示···数据发不过去了···
但是如果我将 int *new_server_socket; 放在函数名里边 就是改成:int getVipDomains(int *new_server_socket)
然后就提示
ss=-1
```
貌似跳过send部分了,数据没发送过去···
请问下,···我该怎么改才能正确的将数据发过去···
|
你这个new_server_socket到底想定义成int还是int *?
|
int *new_server_socket; ////////////////////好像就是定义这个的时候出问题了···
------------
你这样的话,是空指针,肯定段错误了..
函数的定义要参照你的调用方式,你如何调用,就如何定义了
------------
你这样的话,是空指针,肯定段错误了..
函数的定义要参照你的调用方式,你如何调用,就如何定义了