C程序中的某种内存错误
Some Kind of memory error in C program
我用这个结构。
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;
}
listaPtr->anEmmission
是指针,似乎没有被初始化指向任何有效的内存。
所以在这里取消引用它的值
temp->title = ...
访问title
会引发未定义的行为。
我用这个结构。
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;
}
listaPtr->anEmmission
是指针,似乎没有被初始化指向任何有效的内存。
所以在这里取消引用它的值
temp->title = ...
访问title
会引发未定义的行为。