Вылетает ошибка при вызове malloc - C (СИ)
Формулировка задачи:
Есть такой код:
При выполнении последней строчки вылетает ошибка просто, ничего конкретного не пишется. В чём дело может быть? как исправить? Заранее спасибо.
FILE *file; struct Student *students = 0; struct Student student; struct Exam *exams; struct Exam exam; int *size, *temp; int i = 0, j = 0, k = 0; size = (int*)malloc(sizeof(int)); temp = (int*)malloc(sizeof(int)); writeToFile(); file = fopen("students.dat","rb"); j=0; while(fread(size, sizeof(int), 1, file) != 0) { if (j==0) { students = (struct Student*)malloc(sizeof(struct Student)); } else { students = (struct Student*)realloc(students, sizeof(struct Student) * (j+1)); } student.name = (char*)malloc((*size+1) * sizeof(char)); fread(student.name, sizeof(char),&size, file); student.name[*size] = 0; fread(temp, sizeof(int), 1, file); student.examsCount = *temp; student.exams = (struct Exam*)malloc(student.examsCount * sizeof(struct Exam));
Определения структур
struct Exam { char* name; int gradesCount; int* grades; }; struct Student { char* name; int examsCount; struct Exam* exams; };
если закомментить writeToFile(), ошибка продолжает появляться, так что дело не в этом
Решение задачи: «Вылетает ошибка при вызове malloc»
textual
Листинг программы
int *arr = NULL; arr = (int *)malloc(n*sizeof(int));
Объяснение кода листинга программы
- Объявляется переменная
arr
типа int* и инициализируется значением NULL. - Выполняется операция
arr = (int *)malloc(n*sizeof(int));
, которая выделяет память под массив из n целых чисел.- n - это переменная типа int, которая содержит количество элементов, которые необходимо выделить в массиве.
int
- это тип данных, для которого мы выделяем память.sizeof(int)
- это размер памяти, занимаемый одним элементом типа int, в байтах.malloc
- это функция, которая выделяет память под заданный размер.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д