Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1426353
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类: C/C++

2013-04-09 19:39:50

原文地址:C语言指针初始化问题 作者:bsdcfp


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行分配空间的代码。

结构体指针需要初始化。

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