Использование placement new
От: Аноним  
Дата: 03.05.06 13:26
Оценка:
struct SomeClass {...};

struct Node
{
    int m_i;
    SomeClass m_Obj;
};

int main()
{
    char* p = (char*)malloc(sizeof(Node));
    Node* pNode = (Node*)p;
    pNode->m_i = 1234;
    new (pNode + sizeof(pNode->m_i)) SomeClass;
    // ..
    pNode->m_Obj.~SomeClass();
    free(p);
}


Насколько переносим/корректен выделенный фрагмент при условии что расположение полей в Node меняется не будет?

Замечание: сделать у Node конструктор и инициировать m_i и m_Obj через него не подходит, так как предполагается что Node — глупая структура и не умеет сама инициализировать свои поля.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.