Я думаю, что это проблемы, но кто-то, пожалуйста, позвоните мне, если я допустил ошибку.
Если у меня есть целочисленный массив, я выделяю его следующим образом:
int * x ; // Array of length 3
x = ( int * ) malloc( 3 * sizeof( int ) ) ;
Я приведу x как int *
, потому что malloc вернет адрес в куче, и я хочу, чтобы этот адрес интерпретировался как указатель на целое число. Однако я использую int
внутри вызова malloc, поскольку хочу выделить достаточно места для 3 int
типов.
Итак, вы захотите использовать sizeof( struct fracBlock * )
вместо sizeof( struct fracBlock )
по этой причине. Вам также необходимо выделить место для каждого элемента этого массива с помощью вызовов malloc
. Это связано с тем, что каждый элемент массива является указателем, и когда вы выделяете его, он не обязательно обязательно указывает на любое пространство, которое вы уже выделили.
Кроме того, я думаю, вам нужно выделить место для tempFrac с помощью другого вызова malloc. Вы разыменовываете указатель при назначении ему значения, но пространство кучи не было выделено, что приводит к segfault, поскольку вы не обязательно имеете разрешение на запись в эту память.
Реальное решение, хотя ... сборка мусора.