Russian Qt Forum

Программирование => С/C++ => Тема начата: Serr500 от Август 08, 2012, 13:08



Название: [Решено] malloc и конструктор
Отправлено: 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();  // псевдокод


Название: Re: malloc и конструктор
Отправлено: mutineer от Август 08, 2012, 13:13
http://ru.wikipedia.org/wiki/New_(C%2B%2B)#Placement_new


Название: Re: malloc и конструктор
Отправлено: Serr500 от Август 08, 2012, 13:27
Спасибо! То что надо. Много, оказывается, есть в C++ такого, о чём и не подозреваешь.

P.S. А псевдокод оказался правильным кодом.  :)


Название: Re: malloc и конструктор
Отправлено: mutineer от Август 08, 2012, 13:30
Для меня оказалось открытием, что есть placement delete
http://www.rsdn.ru/forum/cpp/47456.1.aspx


Название: Re: malloc и конструктор
Отправлено: Serr500 от Август 08, 2012, 13:49
Ну, в общем-то логично. Если есть placement new, то почему бы не быть placement delete.


Название: Re: malloc и конструктор
Отправлено: once_again_abc от Сентябрь 18, 2012, 09:45
Спасибо! То что надо. Много, оказывается, есть в C++ такого, о чём и не подозреваешь.

P.S. А псевдокод оказался правильным кодом.  :)

в эмбеддед С++ частенько используется. когда динамически память выделять нельзя, а фишками ООП пользоваться хочется =)