Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / создание объекта класса/структуры с помощью HeapAlloc / 4 сообщений из 4, страница 1 из 1
27.05.2015, 14:10
    #38969791
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание объекта класса/структуры с помощью HeapAlloc
Можно ли создавать объекты этой функцией ?

работаю с динамическими структурами - связанные списки.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
struct tree 
{
	tree *next;
        ...
        ...
        ...
}


списки по размеру очень большие и если их освобождать классическим способом:

Код: plaintext
1.
2.
3.
4.
5.
	while( node ) {
	   tree *cur = node;
	   node = node->next;
	   delete cur;
	}



то довольно долго ждать приходится.

кучу создаю так
Код: plaintext
1.
hHeap = HeapCreate( HEAP_NO_SERIALIZE, 0, 0 );


добавляю элементы так
Код: plaintext
1.
2.
3.
4.
tail = item = item->next = (tree *)HeapAlloc( hHeap,  HEAP_ZERO_MEMORY, sizeof( tree ) ) ;
...
...
...


Для освобождения памяти списка делаю зразу так
Код: plaintext
1.
HeapDestroy( hHeap );


без HeapFree.

и происходит очень быстрое освобождение памяти и снова можно создавать список.

в структуре struct tree есть конструктор с параметрами.
Как через вызов HeapAlloc передать параметры в конструктор или как сделать обертку для HeapAlloc ?
...
Рейтинг: 0 / 0
27.05.2015, 14:14
    #38969796
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание объекта класса/структуры с помощью HeapAlloc
Переопредели оператор new для своей структуры.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.05.2015, 15:15
    #38969866
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание объекта класса/структуры с помощью HeapAlloc
Вовсе не обязательно переопределять operator new в классе,
можно сначала выделить память, потом разместить объект в этой памяти с помощью placement new (глобального).
Только надо не забывать, что деструктор каждого объекта в этом случае нужно вызывать самому.
...
Рейтинг: 0 / 0
27.05.2015, 16:56
    #38969992
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
создание объекта класса/структуры с помощью HeapAlloc
Dimitry Sibiryakov, спасибо
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / создание объекта класса/структуры с помощью HeapAlloc / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]