Выделения памяти недостаточно.Вы также должны вызвать конструктор.
Наиболее распространенный и рекомендуемый способ простого динамического выделения в C ++ -
scopeList_T* t1 = new scopeList_T;
- это выделить память, а затем вызвать конструктор.вы сделали со структурой, вы должны удалить объект, подобный этому
delete t1;
ADD:
Если вам действительно нужно использовать другой распределитель памяти (например, malloc/ free или что-то в вашем собственном дизайне), тогда вы должны выделить память и вызвать новое размещение (это похоже на явный вызов конструктора).Когда вы закончите с объектом, вы должны явно вызвать деструктор и затем освободить память.Важная вещь: память, выделенная для объекта, должна соответствовать требованиям выравнивания для этого типа объекта.
Пример:
// allocating memory
void* p = my_alloc( sizeof(scopeList_T) );
if( p == NULL )
{
// report allocation error and throw or return
}
// placement new operator
scopeList_T* t1 = new(p) scopeList_T; // t1 == p
// do some thing with the object
// .............................
// call destructor explicitly
t1->~scopeList_T();
// free memory
my_free(p); // or free(t1); that is the same