Baixe o app para aproveitar ainda mais
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.
Compartilhar