Это конкретный случай, но поскольку я пришел на эту страницу, ища решение и не нашел его, я добавлю его здесь.
Windows (проверена с 7) не принимать специальные символы (например, á
) в именах классов и пакетов. Linux, однако.
Я узнал об этом, когда я построил .jar
в NetBeans и попытался запустить его в командной строке. Он работал в NetBeans, но не в командной строке.
realloc()
может возвращать другой указатель, чем исходный, но вы назначаете это на temp
только для того, чтобы вызывающая функция по-прежнему работала с исходным указателем. Измените double_array_size()
, чтобы вернуть новый указатель, возвращенный realloc()
, и вызвать
d = double_array_size(d, array_size);
. Кроме того, вы всегда должны проверять результат fo malloc()
, realloc()
и т. Д. Они могут возвращать NULL, если есть больше нет памяти
Объединив ответы Ingo и codroipo, вам нужно либо вернуть новый указатель из double_array_size
, либо вам нужно передать указатель на d
, чтобы вы могли обновить указатель с double_array_size
Realloc перераспределяет память, поэтому, возможно, память, указанная в d, будет выпущена, поэтому double_array_size должен отредактировать d, вы можете попробовать:
void double_array_size(struct course** d, int new_size){
*d = realloc(*d, new_size * sizeof(struct course));
.
.
.
}