Articles of gerenciamento de memory

Por que eu tenho que chamar superdealloc por último, e não primeiro?

exemplo correto: – (void)dealloc { [viewController release]; [window release]; [super dealloc]; } exemplo errado: – (void)dealloc { [super dealloc]; [viewController release]; [window release]; } Embora em quase todos os outros casos, ao replace um método, eu primeiro chamaria a implementação do método do super, neste caso, apple sempre chama [super dealloc] no final. Por quê?

Qual é a diferença entre gc () e rm ()

Eu estou periodicamente limpando a memory em R usando uma chamada para rm(list=ls()) . Preciso chamar o coletor de lixo gc() depois disso? Qual é a diferença entre essas duas funções? O gc() chama o rm() para certas variables?

A chamada gratuita ou a exclusão sempre libera a memory de volta ao “sistema”

Aqui está a minha pergunta: Chamar livre ou excluir sempre liberar memory de volta para o “sistema”. Por sistema, isso significa reduzir o segmento de dados do processo? Vamos considerar o alocador de memory no Linux, ou seja, ptmalloc. Pelo que eu sei (por favor me corrija se eu estiver errado), ptmalloc mantém uma lista […]

Perl perfil de uso de memory e detecção de vazamento?

Eu escrevi um serviço de rede persistente em Perl que roda no Linux. Infelizmente, à medida que é executado, seu tamanho de pilha residente (RSS) apenas cresce, cresce e cresce lenta mas seguramente. Isso ocorre apesar dos esforços diligentes da minha parte para eliminar todas as chaves hash desnecessárias e excluir todas as referências a […]

Onde as variables ​​constantes são armazenadas em C?

Eu me pergunto onde as variables ​​constantes são armazenadas. Está na mesma área de memory que as variables ​​globais? Ou está na pilha?

Como encontrar a causa de um erro “duplo livre” de malloc?

Estou programando um aplicativo no Objective-C e estou recebendo este erro: MyApp (2121,0xb0185000) malloc: *** erro para o object 0x1068310: double free *** defina um ponto de interrupção em malloc_error_break para depurar Está acontecendo quando eu libero um NSAutoreleasePool e não consigo descobrir qual object eu estou lançando duas vezes. Como faço para definir seu […]

Quando devo usar malloc em C e quando não faço?

Eu entendo como malloc () funciona. Minha pergunta é, eu vou ver coisas assim: #define A_MEGABYTE (1024 * 1024) char *some_memory; size_t size_to_allocate = A_MEGABYTE; some_memory = (char *)malloc(size_to_allocate); sprintf(some_memory, “Hello World”); printf(“%s\n”, some_memory); free(some_memory); Eu omiti a verificação de erros por questão de brevidade. Minha pergunta é, você não pode simplesmente fazer o acima, […]

É possível excluir um object não novo?

Eu tenho um object com um vetor de pointers para outros objects, algo assim: class Object { … vector objlist; … }; Agora, os objects serão adicionados à lista de ambas as maneiras: Object obj; obj.objlist.push_back(new Object); e Object name; Object* anon = &name; obj.objlist.push_back(anon); Se um faz um destruidor que é simplesmente ~Object { […]

std :: vector e memory contígua de matrizes multidimensionais

Eu sei que o padrão não força o std::vector a alocar blocos de memory contíguos, mas todas as implementações obedecem a isso, no entanto. Suponha que eu deseje criar um vetor de um array estático multidimensional. Considere 2 dimensões por simplicidade e um vetor de comprimento N. Queremos criar um vetor com N elementos de, […]

Existe uma razão para chamar excluir em C ++ quando um programa está saindo de qualquer maneira?

Na minha function main C ++, por exemplo, se eu tivesse um ponteiro para uma variável que usa memory heap (em oposição a memory de pilha) – isso é desalocados automaticamente após a saída do meu aplicativo? Eu diria que sim. Mesmo assim, é uma boa prática excluir sempre as alocações de heap mesmo se […]