Форум программистов, компьютерный форум CyberForum.ru

Для чего необходимо распределять память при помощи new и как оно работает - C++

Восстановить пароль Регистрация
 
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
26.09.2011, 23:39     Для чего необходимо распределять память при помощи new и как оно работает #1
Сижу вот думаю над таким куском кода и не могу понять, как он работает.
Допустим мы объявляем структуру:
C++
1
2
3
4
struct nameofctruct
{
setofsomevar;
};
Затем выделяем необходимое кол-во памяти для хранения уже объявленной структуры nameofstruct.
C++
1
nameofstruct *p_to_struct = new nameofstruct;
Значит, как я думаю... при объявлении структуры в самом начале мы уже резервируем необходимое количество памяти для её хранения. А затем мы берем и "селим" её по другому адресу. Но ведь она уже есть по одному адресу. Зачем это делается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2011, 23:39     Для чего необходимо распределять память при помощи new и как оно работает
Посмотрите здесь:

Составить программу для решения задачи с целыми числами при помощи циклов C++
Как сортировать массив при помощи функцыи sort C++
C++ WinAPI Как разобрать emf-файл при помощи WinApi?
C++ как усовершенствовать студ.актив при помощи С++
C++ Выделение в динамичесую память как его написать и как оно происходит? Что это я пишу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.09.2011, 23:56     Для чего необходимо распределять память при помощи new и как оно работает #2
при объявлении структуры в самом начале мы уже резервируем
необходимое количество памяти для её хранения . А затем мы берем и "селим" её по другому
адресу. Но ведь она уже есть по одному адресу
Не правильно. При описании структуры вы просто сообщаете компилятору, данные какого типа будет содержать структура. Память выделяется при объявлении переменной, либо динамически при вызове malloc / new. К примеру, чтобы объявить глобальную переменную типа структуры (что на самом деле не лучшее решение в большинстве случаев), нужна примерно такая запись
C
1
2
3
4
struct POINT {
    int x;
    int y;
} pt;
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
27.09.2011, 00:00     Для чего необходимо распределять память при помощи new и как оно работает #3
Проще говоря, вы определяете новый тип, называемый пользовательским типом.
При создании объекта этого типа выделяется память для данных в структуре, т.е. в вашем случае выделяется память для setofsomevar;
Тоже касается и для класса.
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
27.09.2011, 00:16     Для чего необходимо распределять память при помощи new и как оно работает #4
struct nameofctruct
{
setofsomevar;
};
составляете смету

nameofstruct *p_to_struct = new nameofstruct;
просите деньги, соответствующие смете
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
27.09.2011, 11:27  [ТС]     Для чего необходимо распределять память при помощи new и как оно работает #5
ага... ну, пока понятно. Спасибо )
Yandex
Объявления
27.09.2011, 11:27     Для чего необходимо распределять память при помощи new и как оно работает
Ответ Создать тему
Опции темы

Текущее время: 13:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru