Russian Qt Forum
Сентябрь 30, 2024, 18:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] malloc и конструктор  (Прочитано 4330 раз)
Serr500
Гость
« : Август 08, 2012, 13:08 »

Как известно, оператор new выделяет память для экземпляра объекта и вызывает конструктор, который, в том числе, инициализирует переменные, расположенные в выделенной памяти. А есть ли способ вызова конструктора, который будет оперировать с памятью, выделенной не оператором new, а допустим, функцией malloc? То есть, должно получиться чтот-то типа следующего:
Код:
class T 
{
    private :
        Var var;
    public :
        T() : var(varValue) { }
}

void* mem = malloc(sizeof(T));
T* = new(mem) T();  // псевдокод
« Последнее редактирование: Август 08, 2012, 13:57 от Serr500 » Записан
mutineer
Гость
« Ответ #1 : Август 08, 2012, 13:13 »

http://ru.wikipedia.org/wiki/New_(C%2B%2B)#Placement_new
Записан
Serr500
Гость
« Ответ #2 : Август 08, 2012, 13:27 »

Спасибо! То что надо. Много, оказывается, есть в C++ такого, о чём и не подозреваешь.

P.S. А псевдокод оказался правильным кодом.  Улыбающийся
Записан
mutineer
Гость
« Ответ #3 : Август 08, 2012, 13:30 »

Для меня оказалось открытием, что есть placement delete
http://www.rsdn.ru/forum/cpp/47456.1.aspx
Записан
Serr500
Гость
« Ответ #4 : Август 08, 2012, 13:49 »

Ну, в общем-то логично. Если есть placement new, то почему бы не быть placement delete.
Записан
once_again_abc
Гость
« Ответ #5 : Сентябрь 18, 2012, 09:45 »

Спасибо! То что надо. Много, оказывается, есть в C++ такого, о чём и не подозреваешь.

P.S. А псевдокод оказался правильным кодом.  Улыбающийся

в эмбеддед С++ частенько используется. когда динамически память выделять нельзя, а фишками ООП пользоваться хочется =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 20.