6 / 6 / 5
Регистрация: 05.04.2016
Сообщений: 67
|
||||||
1 | ||||||
Ошибка оператора free() после перераспределения03.01.2018, 23:04. Показов 689. Ответов 4
Метки нет (Все метки)
что то не могу понять почему ошибка в строке освобождения... подскажите что не так?
суть задачи: чтение из стдина в буфер. размер буфера может расти до 64МБ.. причем, пару раз нормально сработала, а так ошибка без описания, времени выполнения, но отладчик не ловит.
0
|
03.01.2018, 23:04 | |
Ответы с готовыми решениями:
4
Не могу зайти на локальный диск D: после перераспределения Акронисом Ошибка после перегрузки оператора + Неправильная работа оператора присваивания после работы оператора суммирования VIM - после запуска сценария командой sh, выдаётся ошибка на отсутствие оператора select |
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
03.01.2018, 23:19 | 2 |
realloc сам заботится об освобождении памяти в случае успеха. Т.е. в строке 25 ты пытаешься освободить уже ранее освобожденную память, вот он и крешится.Тебе только нужно вручную обработать случай, когда перевыделить память не удается, т.е. realloc вернул nullptr .
1
|
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
|
03.01.2018, 23:22 | 3 |
Lunix, не используйте realloc, пишите на C++.
http://en.cppreference.com/w/c/memory/realloc - беглый поиск показывает, что realloc сам освобождает память, если это нужно. Но если он возвращает nullptr - значит операция прошла неудачно и к прежнему указателю free не была применена. Но это уже исключительная ситуация и её надо обрабатывать отдельно.
1
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
04.01.2018, 13:36 | 5 |
realloc в общем случае быстрее последовательности "выделить новый буфер, скопировать в него старый, старый буфер прибить". Потому как realloc, в отличие от, может изменить размер буфера не перемещая его с места на место. А может буфер и переместить, да. И в C++ аллокаторы аналога realloc пока не завезли. Завезли только костылик "а чтоб не перемещать буфер туда-сюда, вектор будет брать память с запасом и дергать аллокатор пореже".
0
|
04.01.2018, 13:36 | |
04.01.2018, 13:36 | |
Помогаю со студенческими работами здесь
5
После использования free? он не оказывает влияния после выхода из функции Ошибка в вводе данных из HTML и переносе их в JavaScript, при выполнении оператора IF или оператора swithc SIGABRT после free malloc Ошибки после перехода с abc на free Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |