realloc () работает только несколько раз [дубликат]

Это конкретный случай, но поскольку я пришел на эту страницу, ища решение и не нашел его, я добавлю его здесь.

Windows (проверена с 7) не принимать специальные символы (например, á) в именах классов и пакетов. Linux, однако.

Я узнал об этом, когда я построил .jar в NetBeans и попытался запустить его в командной строке. Он работал в NetBeans, но не в командной строке.

0
задан Samuel Spencer 16 July 2013 в 16:24
поделиться

3 ответа

realloc() может возвращать другой указатель, чем исходный, но вы назначаете это на temp только для того, чтобы вызывающая функция по-прежнему работала с исходным указателем. Измените double_array_size(), чтобы вернуть новый указатель, возвращенный realloc(), и вызвать

d = double_array_size(d, array_size);

. Кроме того, вы всегда должны проверять результат fo malloc(), realloc() и т. Д. Они могут возвращать NULL, если есть больше нет памяти

2
ответ дан Ingo Leonhardt 1 September 2018 в 04:48
поделиться

Объединив ответы Ingo и codroipo, вам нужно либо вернуть новый указатель из double_array_size, либо вам нужно передать указатель на d, чтобы вы могли обновить указатель с double_array_size

0
ответ дан aiguofer 1 September 2018 в 04:48
поделиться

Realloc перераспределяет память, поэтому, возможно, память, указанная в d, будет выпущена, поэтому double_array_size должен отредактировать d, вы можете попробовать:

void double_array_size(struct course** d, int new_size){
*d = realloc(*d, new_size * sizeof(struct course));
.
.
.
}
0
ответ дан Matteo Umili 1 September 2018 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: