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

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

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

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

04.01.2012, 02:28. Просмотров 2154. Ответов 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 //
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2012, 02:28     Выделение памяти (new)
Посмотрите здесь:

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

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

Выделение памяти - C++
Здравствуйте! #include<iostream> int main() { int *mass = new int ; int *mass2 = new int ; std::cout << (unsigned int)mass <<...

Выделение памяти - C++
Добрый вечер. Немогу никак понять некоторые тонкости выделения памяти. Во первых: на что указывает указатель, при записи char*...

Выделение памяти - C++
Какой суммарный объем памяти в байтах будут занимать поля CObj всех объектов класса CEx в этой программе: class CEx {public: static...

Выделение памяти - C++
Платформа и компилятор x64. Установлено 64Gb ОЗУ, 60Gb из них откусил SQL Server. Пытаюсь сделать следующее: struct Dictionary { ...

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

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

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

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

Выделение памяти - C++
int main() { FILE *fIn = NULL, *fOut =NULL; Error EMyError; CNodeStack *Start; CNodeStack *ListF = new CNodeStack; ...

Выделение памяти - C++
Эта программа должна забрать у системы 10 МБ, но диспетчер задач показывает, что программа забирает 163 МБ. Почему ? ...

Выделение памяти - C++
Всем доброго времени суток! Пытаюсь сделать связанный список на 100кк элементов, но не выделив памяти и под половину, программа жрёт 4...

Выделение памяти(С = С++) - C++
Привет. Нужна помощь, в выделении памяти. Есть код на С, нужно перевести его в С++. int SaveFileOne(int i) { FILE *f; if ((f =...

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


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

Или воспользуйтесь поиском по форуму:
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
04.01.2012, 03:59  [ТС]     Выделение памяти (new) #6
Странно только что я не заметил предложение почитать статью на русском когда я открывал вики, наверное пора ложиться спать.
Yandex
Объявления
04.01.2012, 03:59     Выделение памяти (new)
Ответ Создать тему
Опции темы

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