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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.01.2012, 02:28     Выделение памяти (new) #1
Наткнулся на пример где делают непонятные мне выделения памяти с помощью 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 //
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 02:28     Выделение памяти (new)
Посмотрите здесь:

Выделение памяти C++
C++ Выделение памяти
C++ выделение памяти
Выделение памяти C++
C++ Выделение памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Razzeeyy
 Аватар для Razzeeyy
30 / 7 / 2
Регистрация: 01.03.2011
Сообщений: 95
04.01.2012, 02:41     Выделение памяти (new) #2
Я конечно тоже не силён в этом, но какое-то внутреннее чувство мне подсказывает, что это бойда -- шаманство с приведением типов в стиле C...

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

P.S. где-же ты такой код нашел? О_О
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.01.2012, 02:41     Выделение памяти (new) #3
читай о placement new
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.01.2012, 03:05  [ТС]     Выделение памяти (new) #4
Jupiter, а где бы о нём почитать на русском? Пока нашёл лишь это:
Код
Как известно есть так называемый оператор placement new. Он реально не выделяет память, а только вызывает конструктор объекта. Также существует парный ему placement delete.
Но что-то это не вяжется с реальностью (new и так ведь вызывает конструктор, это же не malloc) так что хотелось бы всё же на русском и понятнее, ну или пример приведите с ним пожалуйста. Статья на вики на англ. тяжеловата что-то.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.01.2012, 03:40     Выделение памяти (new) #5
Цитата Сообщение от Gepar Посмотреть сообщение
Статья на вики на англ. тяжеловата что-то.
читай статью на русском
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
04.01.2012, 03:59  [ТС]     Выделение памяти (new) #6
Странно только что я не заметил предложение почитать статью на русском когда я открывал вики, наверное пора ложиться спать.
Yandex
Объявления
04.01.2012, 03:59     Выделение памяти (new)
Ответ Создать тему
Опции темы

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