2010-01-27 2 views
0

Сенарио моего вопроса заключается в том, что для отслеживания определенного количества «объектов» нужно использовать фиксированный размер массива.как эффективно управлять массивом «ресурсов»

Объект здесь может быть таким же простым, как целое или сложным, как очень причудливая структура данных. И «отслеживать» здесь означает выделение одного объекта, когда другой части приложения требуется один экземпляр объекта и переустанавливает его для последующего выделения, когда возвращается один экземпляр объекта. Наконец, позвольте мне использовать C++, чтобы поместить мой пробль в более описательный способ.

#define MAX 65535 
/* 65535 just indicate that many items should be handled . performance demanding! */ 

typedef struct { 
    int item ; 
}Item_t; 
Item_t items[MAX] ; 

class itemManager { 
private : 
    /* up to you.... */ 
public : 
    int get() ; /* get one index to a free Item_t in items */ 
    bool put(int index) ; /* recyle one Item_t indicate by one index in items */ 
} 

Как вы реализуете две публичные функции itemManager? вам нужно добавить любого частного участника.

+1

Домашнее задание. Это? – 2010-01-27 23:16:56

+0

@rampion: не совсем, это просто работа. :-) Сегодня я прочитал интересный унаследованный код, в основном делаю то же самое, что и так называемая «домашняя работа» здесь. Простым образом, я все же хочу видеть, как переполнение стека реализует его. –

+0

http://en.wikipedia.org/wiki/Free_list – mcdowella

ответ

0

Попробуйте использовать некоторую модель распределения памяти, есть несколько из них. Самый простой способ - хранить объекты в элементах по мере их прохождения и хранить перед ними размер этого объекта imho.

Смежные вопросы