【发布时间】:2015-05-17 13:37:27
【问题描述】:
我也清除了一个结构并分配了一些内存。使用我更新数据的功能。我在访问数据时遇到了错误分段错误。
这是我的代码
在头文件中:
typedef struct
{
int member;
char *name;
}place;
void update(place **,int);
void display(place **,int);
在函数中
static memallocate(place **ptr,int viname,int index)
{
ptr[index]=(place *)malloc(sizeof(place));
ptr[index]->name=(char *)malloc(viname*sizeof(char *));
}
void update(place **ptr,int index)
{
---read string value "na" find the strlen as "pp"---
memallocate(ptr,pp,index);
ptr[index]->name=na;
}
void display(place **ptr,int index)
{
int i;
for(i=0;i<index;i++)
{
printf("%s\n",ptr[i]->name);
printf("%s\n",ptr[i]->country);
}
}
在主文件中:
void main()
{
int index=0;
place *pla[5]={NULL};
while(index<2)
{
update(&pla[index],index);
index++;
}
display(pla,index);
}
我的问题是我在访问函数display 时出现分段错误,并且无法打印数据 ptr[0]->name,ptr[0]->country,ptr[1]->name,ptr[1] ->国家..为什么会这样?任何内存故障。每次更新后我都使用 printf 进行打印。
【问题讨论】:
-
如果您发布了可以编译的内容,将会有很大帮助。最好是您从中获得段错误的实际代码。
标签: c pointers structure function-pointers dynamic-memory-allocation