Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101552
  • 博文数量: 12
  • 博客积分: 118
  • 博客等级: 民兵
  • 技术积分: 306
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-04 13:09
文章分类

全部博文(12)

文章存档

2014年(1)

2013年(10)

2012年(1)

我的朋友

分类: C/C++

2013-04-07 19:40:15


C语言中,所有指针使用前都必须初始化,结构体中的成员指针也一样。

今天写了一个函数,编译通过,没有任何问题。但是调用该函数却出现segment fault(段错误)提示。找了很久才发现是结构体指针未分配空间。
关键代码如下:

点击(此处)折叠或打开

  1. //----------dist=varstripe--goto
  2.     PVFS_sys_dist *dist;
  3.     //malloc
  4.     dist = (PVFS_sys_dist*)malloc(sizeof(PVFS_sys_dist))
  5.     printf("malloc success!\n ");
  6.     PVFS_varstrip_params varstrip_params = { "0:32;" };
  7.     char dist_name[PVFS_DIST_VARSTRIP_NAME_SIZE];
  8.     strcpy(dist_name, PVFS_DIST_VARSTRIP_NAME);
  9.     printf("copy dist_name success! \n ");
  10.     dist->params = (void*)&varstrip_params;
  11.     printf("delivery params success! \n ");
  12.     dist->name = &dist_name;
  13.     printf("delivery dist_name success! \n ");
  14.     //----------end
其中,结构体为

点击(此处)折叠或打开

  1. struct PVFS_sys_dist_s
  2. {
  3.     char* name;
  4.     void* params;
  5. };
  6. typedef struct PVFS_sys_dist_s PVFS_sys_dist;
出现段错误的原因就在于缺少第4行分配空间的代码。

结构体指针需要初始化。

阅读(2078) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~