Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Arrays dinâmicos

From 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 04:29.
186 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.

×