C语言中Linux下段异常
C语言中Linux下段错误
#include <stdio.h>
#include <netdb.h> /*包含相关的头文件。*/
#include <string.h>
int main()
{
struct protoent *pro; /*定义一个表示协议的结构体指针。*/
int i;
for(i=0;i<5;i++) /*循环。*/
{
pro=getprotobynumber(i); /*取得协议信息。*/
printf("protocol name : %s\n",pro->p_name); /*协议名。*/
printf("protocol number : %d\n",pro->p_proto); /*协议号。*/
printf("protocol alias: %s\n",pro->p_aliases[0]); /*别名。*/
}
}
运行环境为ubuntu11.04 .运行没问题出现。
把 for(i=0;i<n;i++) 如果n>8的数就出显示0到6的数据接着显示段错误。
出现这个问题的原因是什么。
UDP number 17
------解决方案--------------------
编译的时候加-g,然后gdb调试一下吧。
------解决方案--------------------
#include <stdio.h>
#include <netdb.h> /*包含相关的头文件。*/
#include <string.h>
int main()
{
struct protoent *pro; /*定义一个表示协议的结构体指针。*/
int i;
for(i=0;i<5;i++) /*循环。*/
{
pro=getprotobynumber(i); /*取得协议信息。*/
if(pro == 0)
{
printf("protocol name : fail\n");
continue;
}
printf("protocol name : %s\n",pro->p_name); /*协议名。*/
printf("protocol number : %d\n",pro->p_proto); /*协议号。*/
printf("protocol alias: %s\n",pro->p_aliases[0]); /*别名。*/
}
}
#include <stdio.h>
#include <netdb.h> /*包含相关的头文件。*/
#include <string.h>
int main()
{
struct protoent *pro; /*定义一个表示协议的结构体指针。*/
int i;
for(i=0;i<5;i++) /*循环。*/
{
pro=getprotobynumber(i); /*取得协议信息。*/
printf("protocol name : %s\n",pro->p_name); /*协议名。*/
printf("protocol number : %d\n",pro->p_proto); /*协议号。*/
printf("protocol alias: %s\n",pro->p_aliases[0]); /*别名。*/
}
}
运行环境为ubuntu11.04 .运行没问题出现。
把 for(i=0;i<n;i++) 如果n>8的数就出显示0到6的数据接着显示段错误。
出现这个问题的原因是什么。
UDP number 17
------解决方案--------------------
编译的时候加-g,然后gdb调试一下吧。
------解决方案--------------------
#include <stdio.h>
#include <netdb.h> /*包含相关的头文件。*/
#include <string.h>
int main()
{
struct protoent *pro; /*定义一个表示协议的结构体指针。*/
int i;
for(i=0;i<5;i++) /*循环。*/
{
pro=getprotobynumber(i); /*取得协议信息。*/
if(pro == 0)
{
printf("protocol name : fail\n");
continue;
}
printf("protocol name : %s\n",pro->p_name); /*协议名。*/
printf("protocol number : %d\n",pro->p_proto); /*协议号。*/
printf("protocol alias: %s\n",pro->p_aliases[0]); /*别名。*/
}
}