Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Динамическое выделение памяти с помощью new и присваивание указателей

Ответить
Настройки темы
C/C++ - Динамическое выделение памяти с помощью new и присваивание указателей

Ветеран


Сообщения: 1404
Благодарности: 135

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
char *p=new char[5];
char *t=new char[2];
p=t;
Как изменяется p при присваивании p=t? Допустимо ли оно?
То, что оно указывает на область памяти на которую указывает t это понятно. Но память была выделена разная по объему. Объем p требуется сохранять.
Посоветуйте книги, где объясняются подобные тонкости.

Отправлено: 15:08, 29-07-2008

 

Аватара для EvgeniyQQQ

Пользователь


Сообщения: 133
Благодарности: 21

Профиль | Сайт | Отправить PM | Цитировать


Цитата mrcnn:
Как изменяется p при присваивании p=t? Допустимо ли оно? »
p - это всего лишь переменная хранящая адрес на первый байт блока памяти который Вы выделили оператором new. char - сообщает компилятору, какого типа данные там будут храниться, а так же сообщает сколько памяти нужно выделить (в Вашем случае 1 байт x 5 и 1 x 2, если бы указали тип wchar_t, то было бы 2x5 и 2x2, тоесть памяти под этот тип данных необходимо в 2 раза больше).
Если Вы присвоите p адрес содержащийся в t, то p просто будет указывать на первый байт блока памяти выделенный во второй строке Вашего кода. При этом блок памяти выделенный в первой строке будет утерян и превратиться в мусор.
Компилятор не контролирует сколько памяти было выделено для конкретного объекта (p или t), эта процедура ложиться на плечи самого программиста.

-------
"Не соглашайся ни на что, кроме совершенства!" - Анонимный автор.
"Совершенство достигается только к моменту полного краха." - К.Н.Паркинсон.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:00, 29-07-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Динамическое выделение памяти с помощью new и присваивание указателей

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Выполнение кода и выделение памяти для переменной Mr666 Программирование и базы данных 2 14-06-2008 15:19
BSOD - Как с помощью дампа памяти определить драйвер, вызывающий BSOD Vadikan Устранение критических ошибок Windows 0 04-11-2007 03:10
выделение памяти (1,8Gb) в win 2000 для приложения запускаемого в cmd impt Microsoft Windows NT/2000/2003 0 31-05-2006 09:03
Выделение процессу определенного количества памяти Alex_Astana Microsoft Windows 2000/XP 0 09-03-2006 09:47
Динамическо выделение памяти ill Программирование и базы данных 2 04-12-2003 12:56




 
Переход