c-主变压器运行前出现分段故障



在main运行任何能够导致seg错误的重要代码之前,我就收到了一个分段错误。即printf("before main functionality startsn");未运行。

是什么原因导致了这个问题?

 int main() {
  printf("before main functionality startsn"); 
  person* people = create();
  
  //Make new file and write into it
  printf("nWriting into filen");
  char file_name[] = "people_list";
  int file_number = open(file_name, O_CREAT|O_WRONLY, 0644); //only owner can read/write, rest can only read
  int error_check;
  error_check = write(file_number, people, sizeof(&people) ); //reads array into file
 
  if(error_check < 0) {
    printf("ERROR: %sn", strerror(errno));
    return -1;
  }
  close(file_number);
  //Read from new file
  printf("nReading from file...n");
  person* new_people[10];
  file_number = open(file_name, O_RDONLY); //reopens file, now with data
  error_check = read(file_number, new_people, sizeof(people));
  if(error_check < 0) {
    printf("ERROR: %sn", strerror(errno));
    return -1;
  }
  close(file_number);

如果希望立即看到输出,则需要刷新句柄(使用fflush(stdio))。您的程序很可能在立即发出printf调用后崩溃。

IO也在行的末尾刷新,所以如果您的调试语句在'n'中结束,那么它将被显示,您将找到分段错误发生的位置。

在图像中,可以看到没有为结构分配内存。

将内存分配给结构指针firstnew,然后使用它们访问结构成员。

person *first=malloc(sizeof *first);             //remember to free allocated memory

相关内容

  • 没有找到相关文章

最新更新