Namespaces
Variants
Actions
Revision as of 07:29, 10 November 2011 by hamishwillee (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Arrays dinâmicos

Jump to: navigation, search
Dados do artigo

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.

181 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved