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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Выделение памяти (new) - C++

04.01.2012, 02:28. Просмотров 2173. Ответов 5
Метки нет (Все метки)

Наткнулся на пример где делают непонятные мне выделения памяти с помощью new
C++
1
2
3
4
5
6
X* pi = new X; 
X* p2 = new X[10] ; 
X* рЗ = new (&buffer [10] ) X; // поместить X в buffer (освобождение не нужно) 
X* р4 = new (&buffer[11]) X[10] ; 
X* р5 = new (a) X; // выделить из Arena а (освободить из Arena a) 
X* р6 = new (а) Х[10] ;
Я до этого привык использовать только обычное выделение памяти, а с конструкцией когда после new указывается адрес памяти а потом ещё тип как в строке 3 мне не знаком. Что это, зачем это и если можно пример использования с одним из стандартных типов:
C++
1
2
3
    char* x=new char[10];
    x="string";
    char* y=new //
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 02:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти (new) (C++):

Распределение памяти. Динамическое выделение памяти - C++
an-1 an-2 ... a2

Выделение памяти, проверка на утечку памяти - C++
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Выделение памяти - C++
Доброго времени суток. Чтобы выделить память под двумерный массив в такой форме: //n - переменная, M - константа arr = new double...

Выделение памяти... - C++
Вот решил себе ликбез устроить и возникли вопросы: 1) Почему char* p = "fffff"; не реагирует на delete p 2) Когда надо...

Выделение памяти - C++
Скажите пожалуйста что не так? Не могу получить доступ к элементу str = 12, stlb = 3 bool** tempValues = new(bool*); for(int i = 0;...

Выделение памяти - C++
Можно ли сделать так, чтобы в memory выделилась память для 5 int объектов, а затем раздать ее разным переменным? Пытался таким образом и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Razzeeyy
30 / 7 / 2
Регистрация: 01.03.2011
Сообщений: 95
04.01.2012, 02:41 #2
Я конечно тоже не силён в этом, но какое-то внутреннее чувство мне подсказывает, что это бойда -- шаманство с приведением типов в стиле C...

А так, ждём экспертов

P.S. где-же ты такой код нашел? О_О
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.01.2012, 02:41 #3
читай о placement new
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.01.2012, 03:05  [ТС] #4
Jupiter, а где бы о нём почитать на русском? Пока нашёл лишь это:
Код
Как известно есть так называемый оператор placement new. Он реально не выделяет память, а только вызывает конструктор объекта. Также существует парный ему placement delete.
Но что-то это не вяжется с реальностью (new и так ведь вызывает конструктор, это же не malloc) так что хотелось бы всё же на русском и понятнее, ну или пример приведите с ним пожалуйста. Статья на вики на англ. тяжеловата что-то.
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.01.2012, 03:40 #5
Цитата Сообщение от Gepar Посмотреть сообщение
Статья на вики на англ. тяжеловата что-то.
читай статью на русском
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.01.2012, 03:59  [ТС] #6
Странно только что я не заметил предложение почитать статью на русском когда я открывал вики, наверное пора ложиться спать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2012, 03:59
Привет! Вот еще темы с ответами:

выделение памяти - C++
Здравствуйте, помогите пожалуйста исправить ошибку, это лишь малая часть кода. В задании: поле name должно быть динамическим: char...

Выделение памяти - C++
Вот кусок кода, класс и функция добавления в список Класс занимает 64 бита, я добавляю 10 элементов в список - 640 бит Потом отнимаю...

Выделение памяти - C++
Доброго всем вечера. В книжке нашел задание: определить класс, представляющий стек. Сделал так, что при заполнении всего стека,...

Выделение памяти - C++
Часто возникает такая проблема, когда конфигурирую проект как Release происходит ошибка выделения памяти (при вызывании new), например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.01.2012, 03:59
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru