|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
||||||
Динамическая память. Что такое realloc?18.11.2014, 08:39. Показов 1553. Ответов 18
Метки нет (Все метки)
Препод ни в какую не принимает ответы.Я начинающий(занимаюсь 1.5 месяца)
Помогите пожалуйста,кто знает правильно
Вопрос 2: s = p //Я отвечал указателю s присваивается значение указателя p;Верно? Объясните пожалуйста.Заранее спасибо!
0
|
||||||
| 18.11.2014, 08:39 | |
|
Ответы с готовыми решениями:
18
Что такое логическая память ПК Что такое дополнительная память |
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 18.11.2014, 08:41 | |
|
Sergooor, документацию читали?
http://www.opennet.ru/cgi-bin/... ic=realloc
1
|
|
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 18.11.2014, 09:15 [ТС] | |
|
Да,читал.Вот что я ему ответил.Если я не прав пожалуйста напишите как верно.
p = (char*)realloc(s,100); p - указатель на на новый блок памяти размером 100 s- указатель на начало блока памяти размеров 100 А в чем отличие указателей s и p затрудняюсь.
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 18.11.2014, 09:22 | |
|
Sergooor, если взять отдельную строчку, то да: s - указатель на старый блок, p - на новый.
Только логики в алгоритме нет. Зачем выделять 100 байтов памяти, а затем перевыделять столько же?
1
|
|
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 18.11.2014, 09:32 [ТС] | |
|
Ой в malloс(1) должно быть.
Про отдельную строчку он говорит не верно(про realloc) мол по другому все. Еще спрашивает в чем разница между p и s?И куда записывается p и куда s.Как ему ответить? А про s=p я верно сказал?Или ту ошибка?(то что,указателю s присваивается значение указателя p)
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||
| 18.11.2014, 10:06 | |||
|
1
|
|||
|
Вездепух
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
|
||
| 18.11.2014, 10:08 | ||
|
В общем случае 'realloc' имеет право перенести блок в новое место в памяти, а старая память будет полностью освобождена. Указатель 'p' в такой ситуации будет указывать на новый блок, а указатель 's' останется указывать на старое, уже освобожденное место. Указатель, указывающий на освобожденную память можно считать "мусором".
1
|
||
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 18.11.2014, 19:51 [ТС] | |
|
а еслисделать через 1 указатель все ) будет str= malloc(1);
и потом str = realloc(str,100); То все объяснения аналогично будет?Или как то по-другому? Добавлено через 4 часа 46 минут Тогда в этом случае получается, что новый и старый блоки памяти будут начинаться с одинакового адреса ? Добавлено через 1 час 40 минут Или нет?
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
||
| 18.11.2014, 19:57 | ||
|
str будет указывать на выделенный блок памяти а уж совпадает он с предыдущим или нет кого это волнует
1
|
||
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 19.11.2014, 13:21 [ТС] | |
|
str( указатель на новый блок памяти) = realloc(str(указатель на освобожденную память т.е как писал другой человек мусор),100);
ТАК да? Добавлено через 16 часов 56 минут ТО что вы мне написали препод сказал БЛИЗКО, но не верно.Что делать?Кто нибудь из знающий профи может ответить? он щас мне сказал делать через 1 указатель str=realloc(str,100) как ему обьяснить верно
0
|
|
|
|
||
| 19.11.2014, 14:11 | ||
|
Sergooor, мне очень было бы интересно узнать чем его не устраивает описание из гугла (например из русскоязычного цпп референса)...
1
|
||
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 19.11.2014, 15:24 [ТС] | |
|
Я ему примерно так говорил уже)тоже не нравится)он конкретно спрашивает
str(что это )=realloc(str(и что вот это),100) и сегодня еще спросил почему так можно писать? И сказал почему-то иди читай передачу параметров по адресу и по значению(хотя это только будем изучать в дальнейшем)
0
|
|
|
|
|
| 19.11.2014, 15:56 | |
|
Вот честно. Вообще не понимаю какие ответы ему нужны... Могу посоветовать вам попросить его задать вопрос в письменном виде (подробный) если он хочет точный ответ. Иначе это какая-то фигня получается.
1
|
|
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 19.11.2014, 16:32 [ТС] | |
|
Возможно я сейчас неверно его перецитирую но он сказал мне вот что:вот вы говорите,что
p = (char*)realloc(s,100) p указатель новый блок а s указатель на старый, но если я запишу так str = (char*)realloc(str,100) то это тоже работает. и блок памяти тот же Как то так сказал. Добавлено через 10 минут Ладно.Скажите тогда пожалуйста как работает realloc с такой записью и все)Что вовзрашает,и что происходить с параметрами str=realloc(str,100)
0
|
|
|
Диванный эксперт
|
||||||
| 19.11.2014, 16:44 | ||||||
|
примерно как реализован realloc(там все сложнее)
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 19.11.2014, 16:48 | ||
Сообщение было отмечено Sergooor как решение
РешениеБлоки памяти разные. Просто указатель один. При передаче в realloc, str, который в параметре, указывает на старый блок памяти. Потом идет работа функции realloc, она в общем случае выделяет новый блок, а старый освобождает. Пока мы не присвоили результат работы realloc некоему указателю, str указывает на освобожденную память (все так же как и в других примерах, которые объясняли выше). После присвоения результата работы realloc указателю str, он начинает указывать на новый блок памяти. Короче говоря, здесь все тоже самое, что и в предыдущих примерах, просто вместо двух экземпляров указателей используется один. Здесь важно понимать, что значение указателя в параметре копируется при передаче в realloc (т.е. realloc не меняет значение адреса, хранимого в str, через свой параметр).
2
|
||
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 19.11.2014, 16:54 [ТС] | |
|
вот он наверно от меня последнюю строчку ждал вашего ответа
0
|
|
| 19.11.2014, 18:15 | |
|
0
|
|
|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
|
| 19.11.2014, 19:04 [ТС] | |
|
в пятницу к нему пойду )озвучу ответ последний)если не правильно скажет, я вообще не знаю чо делать)
0
|
|
| 19.11.2014, 19:04 | |
|
Помогаю со студенческими работами здесь
19
Что такое дополнительная память Что такое логическая память? Так что же такое виртуальная память? Освобождает ли realloc память? Что это такое ? работает память на 2666гц или 1333гц ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|