Вылетает ошибка при вызове 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));

Объяснение кода листинга программы

  1. Объявляется переменная arr типа int* и инициализируется значением NULL.
  2. Выполняется операция arr = (int *)malloc(n*sizeof(int));, которая выделяет память под массив из n целых чисел.
    • n - это переменная типа int, которая содержит количество элементов, которые необходимо выделить в массиве.
    • int - это тип данных, для которого мы выделяем память.
    • sizeof(int) - это размер памяти, занимаемый одним элементом типа int, в байтах.
    • malloc - это функция, которая выделяет память под заданный размер.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы