Buscar

08ED DOC01

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Operador new 
 
 
Sua função é fazer alocação dinâmica de memória, retornando o endereço inicial do 
bloco alocado. 
 
Você poderá alocar espaço para armazenar um dado ou um conjunto de dados(array). 
 
Se você foi alocar para armazenar um dado, deverá fazê-lo com new, nas se for para 
armazenar um array, use new[] 
 
Operador delete 
 
 
Sua função é retornar para a área de memória livre o espaço que foi alocado 
dinamicamente. 
 
Se você for retornar uma área que estava armazenando um valor, deverá delete, mas se 
for um array, use delete []. 
 
 
 
 
 
 
 
Só usarmos esse operador não no dará garantia de que tudo ocorrerá sem problema com afirma 
DROZDEK, A(2002, p.10) 
Se depois de emitirmos a declaração delete não apagarmos o endereço da variável ponteiro que participa 
da supressão do bloco de memória, o resultado é potencialmente perigoso e podemos fazer o programa 
entrar em colapso quando tentarmos acessar locais inexistentes, particularmente para objetos mias 
complexos do que valores numéricos. Isso que se chama de problema de referência pendente(grifo 
nosso). “ 
Uma das formas de se fazer isso, é atribuir 0(zero) à variável ponteiro para que a variável ponteiro se torne 
nula. 
 
 
 
 
Algumas considerações. 
 
Alocar e desalocar memória poderão trazer alguns problemas para a programação. 
Vamos entender melhor isso. 
Quando desalocamos, uma porção da memória fica livre e, à medida que continuamos 
fazendo mais deslocações, poderemos ficar com uma área de memória livre razoável 
mas que não poderá ser alocada porque está fragmentada e, não poderá ser feita uma 
alocação de um bloco de forma não contígua. 
 
 
 
 
 
 
 
 
 
 
 
Para esclarecer o que estou falando, capturei a situação de um pen drive. 
 
 
 
A situação dele não é crítica porque, nesse caso, o arquivo poderá ficar fragmentado o 
que não é bom, mas é permitido. 
Em termos de alocação de memória, o ideal serial que todos os espaço brancos 
estivessem juntos, mas isso, só antes de qualquer alocação. 
Aliado a esse problema, temos um outro problema: quando alocamos, mas não usamos o 
que alocamos, ficando espaços que não poderão ser usados. 
 
DROZDEK, A(2002, p.520) define esses dois problemas como “Fragmentação Externa 
equivale à presença do espaço perdido entre segmentos alocados na memória; a 
Fragmentação Interna equivale à presença de memória não utilizada dentro dos 
segmentos”. 
 
 
 
 
 As dobradinhas que não podem faltar 
Quem entra com new, sai com delete e zera o ponteiro. 
Quem entra com new[], sai com delete[] e zera o ponteiro.

Outros materiais