C程序中的某种内存错误

时间:2015-05-17 09:46:24

标签: c memory crash malloc

我使用这个结构。

typedef struct {
char *title;
char *description;
int idNumber;
char* tvProducer;
DateTime startTime, endTime;
EventType subjects;
} EmmissionType;



void Emmission_read(FILE* f, EmmissionType* Emmission) {
EmmissionType * temp;
temp=Emmission;
temp->title = (char*) malloc(sizeof(char) * 100);
...

这里程序崩溃,调试器回复消息。

编程接收信号SIGSEGV,分段故障 下一行并不重要。我改变了下一个命令,没有发生任何事情

编辑:

第一个参数是用于读取的打开文件指针,第二个参数是指向获取数据的变量的指针

void Top_read(FILE* f, TVNodeType head) {
TVNodeType ptr;
ptr = head;
int ekp, i;
fscanf(f, "<%d>\n", &ekp);

//Edw 3erw poses ekpompes exw kai 8a ftia3w ena struct gia tin ka8e mia
// system("pause");
Emmission_read(f, ptr->anEmmission);
ptr->next = NULL;

for (i = 1; i < ekp; i++) {
    ptr->next = mallocwarp(sizeof(TVNodeType*));

    ptr = ptr->next;

    // system("pause");
    printf("Hello\n");
    Emmission_read(f, ptr->anEmmission);
    ptr->next = NULL;
    // system("pause");
}
printf(" Top read\n");

}

现在main只读取数据

int main() {

FILE *f = NULL;
f = fopen("input.txt", "r");

TVNodeType listaPtr = NULL;
listaPtr = (TVNodeType) mallocwarp(sizeof(struct TVNodeStruct));
Top_read(f, listaPtr);

return 0;
}

1 个答案:

答案 0 :(得分:2)

listaPtr->anEmmission是指针,似乎没有被初始化为指向任何有效的内存。

所以在这里取消引用它的价值

temp->title = ...

访问title会引发未定义的行为。