Вылетает ошибка при вызове 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- это функция, которая выделяет память под заданный размер.