Форум программистов, компьютерный форум, киберфорум
Наши страницы

Динамическая память. Что такое realloc? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программно вызвать BSDOS http://www.cyberforum.ru/cpp-beginners/thread1303670.html
здравствуйте,хочу пошутить над другом сделая ошибку в ос и вызовя бсдос(на сколько я знаю,для этого надо переполнить озу)
C++ Из положительных элементов матрицы сформировать новую. Написать два варианта программы: без применения указателей и с указателями. Ввод массива с помощью генератора случайных чисел. Имя матрицы:N(10,10) Действия:Из полож.элементов матрицы N... http://www.cyberforum.ru/cpp-beginners/thread1303668.html
Написать рекурсивную функцию, которая вставляет букву в указанное место C++
Написать рекурсивную функцию, которая вставляет букву в указанное место. Вы должны ввести слово и букву, которая будет вставлена на указанную позицию. Например мы ввели Argentina d 4. Программа...
Вывод в консоль из нескольких потоков C++
Здравствуйте. В программе выводятся данные на консоль из нескольких потоков, из-за чего в консоли получается мешанина. Можно ли как-нибудь заблокировать вывод одного потока, пока другой не закончит...
C++ Проект из нескольких файлов http://www.cyberforum.ru/cpp-beginners/thread1303640.html
Выдает ошибку: error C3861: test: идентификатор не найден. и warning C4627: #include "test.h": пропущен при поиске использования предкомпилированного заголовка. test.h: int test(int); ...
C++ Показать правую половину матрицы на левую зеркально симметрично относительно вертикальной оси Заполнить матрицу случайными числами. Показать правую половину матрицы на левую зеркально симметрично относительно вертикальной оси. подробнее

Показать сообщение отдельно
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
19.11.2014, 16:48
Цитата Сообщение от Sergooor Посмотреть сообщение
но если я запишу так str = (char*)realloc(str,100) то это тоже работает. и блок памяти тот же
Он тебя путает специально.
Блоки памяти разные. Просто указатель один.
При передаче в realloc, str, который в параметре, указывает на старый блок памяти.
Потом идет работа функции realloc, она в общем случае выделяет новый блок, а старый освобождает. Пока мы не присвоили результат работы realloc некоему указателю, str указывает на освобожденную память (все так же как и в других примерах, которые объясняли выше). После присвоения результата работы realloc указателю str, он начинает указывать на новый блок памяти. Короче говоря, здесь все тоже самое, что и в предыдущих примерах, просто вместо двух экземпляров указателей используется один.
Здесь важно понимать, что значение указателя в параметре копируется при передаче в realloc (т.е. realloc не меняет значение адреса, хранимого в str, через свой параметр).
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.