powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / realloc: корректен ли такой вызов?
14 сообщений из 14, страница 1 из 1
realloc: корректен ли такой вызов?
    #39611431
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
... char * msg = malloc(....


..

if(msg = realloc(msg, n), NULL==msg)
{
  return;
}



Вопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611517
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЕсть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
... char * msg = malloc(....


..

if(msg = realloc(msg, n), NULL==msg)
{
  return;
}



Вопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?

в том случае если realloc вернул null pointer, деаллоцирование объекта переданного в качестве параметра realloc не должно быть произведено
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611552
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг ХупинВопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?

https://linux.die.net/man/3/realloc If realloc() fails the original block is left untouched; it is not freed or moved.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611615
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вася УткинРолг ХупинВопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?

https://linux.die.net/man/3/realloc If realloc() fails the original block is left untouched; it is not freed or moved.


Получается, что лучше делать так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
... char * msg = malloc(....
 char * msg_new=NULL;

..

if(msg_new = realloc(msg, n), NULL==msg)
{
  if(msg) free(msg);
  return;
}
msg = msg_new;
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611618
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Код: plaintext
1.
2.
3.
...
if(msg_new = realloc(msg, n), NULL==msg)
...


Откуда этот чудокод?

Так сделай
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 char * msg_new = realloc(msg, n);
if(msg_new == NULL) {
  free(msg);
  msg = NULL;
  return;
}
msg = msg_new;
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611798
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если где-то не смогла выделиться память, тут уже не до жиру, надо падать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611879
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРолг Хупин
Код: plaintext
1.
2.
3.
...
if(msg_new = realloc(msg, n), NULL==msg)
...


Откуда этот чудокод?

Так сделай
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 char * msg_new = realloc(msg, n);
if(msg_new == NULL) {
  free(msg);
  msg = NULL;
  return;
}
msg = msg_new;



Об этом и вопрос был, как-то подозрительно с этим резким выходом...

зы. чудокод из PostgreSQL odbc драйвера, там до фига такого.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611881
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли где-то не смогла выделиться память, тут уже не до жиру, надо падать.


да ладно, возможно это какая-то не критическая строка, не выделилась и х.с.н., моэно юзеру написать или по умолчанию что-то сделать...
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39611925
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинDimitry SibiryakovЕсли где-то не смогла выделиться память, тут уже не до жиру, надо падать.


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

Т.ч. если память исчерпана, то боржоми пить уже поздно... все равно в какой-то момент в коре-дамп вывалимся (или на Linux'а OOM Killer прибьет ))) ).

Доктор сказал в морг - значит в морг. И нефиг заниматься самолечением )))

IMHO
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39612030
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг ХупинDimitry SibiryakovЕсли где-то не смогла выделиться память, тут уже не до жиру, надо падать.


да ладно, возможно это какая-то не критическая строка, не выделилась и х.с.н., моэно юзеру написать или по умолчанию что-то сделать...

Если а программе есть какая то не критичная память,
то она не должна выделяться, что бы другим программам
хватало памяти.

Память это не очередь за гуманитаркой, она денег стоит.

В платформе под которую вы пишете софт
память для конечного пользователя вашего ПО
гораздо дороже чем в другом ширпотребе.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39612040
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинОб этом и вопрос был, как-то подозрительно с этим резким выходом...
Выше неоднократно сказали что надо падать и я присоединяюсь, иначе надо глубоко копать что случится на этот "return"
Ролг Хупинзы. чудокод из PostgreSQL odbc драйвера, там до фига такого.
Понятно. Жестокий опенсорсный код от гуру С/С++.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39612063
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРолг ХупинОб этом и вопрос был, как-то подозрительно с этим резким выходом...
Выше неоднократно сказали что надо падать и я присоединяюсь, иначе надо глубоко копать что случится на этот "return"
Ролг Хупинзы. чудокод из PostgreSQL odbc драйвера, там до фига такого.
Понятно. Жестокий опенсорсный код от гуру С/С++.


не то слово, и реаллоки такие есть, и в предыдущих версиях были по крайней мере - strcopy() с исходным указателем на строку неопределенной длины и т.д.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39612151
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинЕсть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
... char * msg = malloc(....


..

if(msg = realloc(msg, n), NULL==msg)
{
  return;
}



Вопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?


вообще, подведу итог:
не используйте realloc.
...
Рейтинг: 0 / 0
realloc: корректен ли такой вызов?
    #39612234
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivРолг ХупинЕсть функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
... char * msg = malloc(....


..

if(msg = realloc(msg, n), NULL==msg)
{
  return;
}



Вопрос: освободится ли выделенная ранее память, если реаллок не смог реаллоцировать?


вообще, подведу итог:
не используйте realloc.
Ну это слишком категорично: https://github.com/torvalds/linux/search?utf8=?&q=realloc&type=
В некритичных местах realloc позволяет упростить код.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / realloc: корректен ли такой вызов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]