×
Namespaces

Variants
Actions

Arrays dinâmicos

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

Artigo
Criado por cabezonxdg em 16 Dec 2007
Última alteração feita por hamishwillee em 10 Nov 2011
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.

This page was last modified on 10 November 2011, at 07:29.
55 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×