|
0 / 0 / 1
Регистрация: 29.03.2014
Сообщений: 71
|
||||||
Динамическая память. Что такое realloc?18.11.2014, 08:39. Показов 1502. Ответов 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
|
|||
|
Вездепух
12923 / 6792 / 1818
Регистрация: 18.10.2014
Сообщений: 17,187
|
||
| 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
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
|
||
| 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
|
||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
||
| 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гц ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|