This page was last modified 17:11, 20 December 2007.
Arrays dinâmicos
From Forum Nokia Wiki
SymbianOS oferece uma série de classes para a utilização de Arrays dinâmicos (análogamente seriam como Vectorsda STL). Estas classes são sub-divididas em dois grupos CArrays e RArrays. CArrays são mais flexíveis porém RArrays oferecem uma maior eficiência. Ambas as classes são templated.
Capacidade do Array
A capacidade do array é o espaço livre disponível que foi alocado por ele. Quando este espaço é totalmente preenchido o array se expande dinâmicamente realocando memória. A capacidade inicial e em quanto ele irá se expandir são definidos pela granularidade do array que é definida durante a sua construção.
Nota: A granularidade precisa ser informada com muita cautela, caso seja um valor muito baixo e o array precise fazer várias re-alocações iremos ter um overhead, por outro lado se esta for muito alta ocorrerá um disperdício de espaço.
Tipos de buffer:
Arrays utilizam dois tipos de buffers, estes buffersé que determinam como a memória será alocada e re-alocada.
Flat Heap: Neste tipo de buffer os dados são armazenados em uma única célula heap(Heap Cell). Quando ouver a necessidade de re-alocar memória será utilizada uma nova célula com tamanho suficiente para armazenar os dados da antiga célula e os novos dados. Isto causa um certo overheadneste processo de cópia. Este tipo de bufferé indicado quando a aplicação não necessita realizar constantes realocações.
Segmented Buffer: Neste buffer os dados são armazenados em pequenos segmentos (cada um representa uma célula da memória de tamanho fixo) e é utilizado uma lista encadeada para fazer a ligação entre estes segmentos. O acesso aos dados é menos eficiente em comparação à Flat heap (é necessário percorrer a lista), porém a inserção e deleção conseguem ser mais eficiente (já que não existe a necessidade de se realizar cópia dos dados). Tipos de array:
Tamanho dos objetos:
Estas informações são referentes a quais objetos o array pode armazenar. Esta nomemclatura é utilizada no nome da classe assim você pode saber como é o seu funcionamento.
Fix: objetos de tamanhos fixos. '
Var: Objetos possuem tamanho variados.
Classes utilizadas para implementar arrays dinâmicos:
RArray - Array para objetos de tamanho fixo. Utiliza flat heap para armazena-los.
RPointerArray - Array que utiliza flat heap para armazenar ponteiros para objetos.
CArrayFixFlat - Array para objetos de tamanho fixo. Utiliza flat heap para armazena-los.
CArrayVarFlat - Array para objetos de tamanho variável. Utiliza flat heap para armazená-los.
CArrayPtrFlat - Array que utiliza flat heap para armazenar ponteiros para objetos.
CArrayPakFlat - CArrayFixSeg - Array para objetos de tamanho fixo. Armazena estes objetos em segmentos.
CArrayVarSeg - Array para objetos de tamanho variavel. Armazena estes objetos em segmentos.
CArrayPtrSeg - Array que utiliza segmentos para armazenar ponteiros para objetos.
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| How to convert to greyscale a Image. Help. | padules | Mobile Java Media (Graphics & Sounds) | 10 | 2006-02-14 14:49 |
| 请问error LNK2001: unresolved external symbol __chkstk是什么訽因? | weiyonggu | Symbian | 1 | 2003-07-14 07:48 |
| CArrayVar Problem | vickey | General Symbian C++ | 6 | 2008-02-11 17:45 |
| string arrays | bullzi | General Symbian C++ | 2 | 2004-11-22 11:41 |
| Slow rendering performance... | cyphre666 | Mobile Java Media (Graphics & Sounds) | 4 | 2003-09-16 11:38 |
