Articles of gerenciamento de memory

Qual é o custo de usar autorelease em cacau?

A maior parte da documentação do Apples parece evitar o uso de objects autoreleased especialmente ao criar visualizações de gui, mas eu quero saber qual é o custo de usar objects autoreleased? UIScrollView *timeline = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 20, 320, 34)]; [self addSubview:timeline]; [timeline release]; Em última análise, devo usar uma estratégia em que tudo […]

Capacidade inicial do vetor em C ++

Qual é a capacity() de um std::vector que é criado usando o construtor padrão? Eu sei que o size() é zero. Podemos afirmar que um vetor construído padrão não chama a alocação de memory de heap? Dessa forma, seria possível criar um array com uma reserva arbitrária usando uma única alocação, como std::vector iv; iv.reserve(2345); […]

Iterando sobre uma Árvore Binária com O (1) Espaço Auxiliar

É possível iterar através de uma tree binária em O (1) espaço auxiliar (sem usar uma pilha, fila, etc.), ou isso foi provado impossível? Se é possível, como pode ser feito? Edit: As respostas que obtive sobre isso ser possível se houver pointers para nós pai são interessantes e eu não sabia que isso poderia […]

Como você armazena um valor inteiro arbitrariamente grande na memory?

Eu tenho que armazenar um valor inteiro maior que o valor máximo para o tipo de dados longo. Como eu armazenaria e manipularia esse valor na memory? Por favor ilustre-o através de um exemplo, se possível.

Sobrecarga de memory do Java HashMap comparado a ArrayList

Eu estou querendo saber qual é a sobrecarga de memory do java HashMap em comparação com ArrayList? Atualizar: Eu gostaria de melhorar a velocidade para procurar valores específicos de um pacote grande (6 Milhões +) de objects idênticos. Assim, estou pensando em usar um ou vários HashMap em vez de usar ArrayList. Mas eu estou […]

implementação malloc?

Estou tentando implementar malloc e free para C, e não sei como reutilizar memory. Eu atualmente tenho uma struct que se parece com isso: typedef struct _mem_dictionary { void *addr; size_t size; int freed; } mem_dictionary; Meu malloc parece com isso: void *malloc(size_t size) { void *return_ptr = sbrk(size); if (dictionary == NULL) dictionary = […]

Encontrando o intervalo de endereços do segmento de dados

Como exercício de programação, estou escrevendo um coletor de lixo mark-and-sweep em C. Desejo varrer o segmento de dados (globais, etc.) para pointers para a memory alocada, mas não sei como obter o intervalo de os endereços deste segmento. Como eu pude fazer isso?

Como acessar o espaço do kernel a partir do espaço do usuário?

Como exatamente a memory do usuário e a memory dos kernels são diferenciadas dentro do kernel do Linux (em termos de dar segurança ao espaço do kernel)? Quais são as diferentes maneiras de escrever no espaço de endereço do kernel a partir do espaço do usuário? Uma maneira que conheço é através de uma chamada […]

Matriz bidimensional dinâmica ponteiro a ponteiro

Primeiro timer neste site, então aqui vai .. Eu sou um novato em C ++ e atualmente estou trabalhando no livro “Estruturas de dados usando C ++ 2nd ed, do DS Malik”. No livro, Malik oferece duas maneiras de criar uma matriz bidimensional dinâmica. No primeiro método, você declara uma variável como uma matriz de […]

Por que / quando usar `intptr_t` para conversão de tipos em C?

Eu tenho uma pergunta sobre o uso de intptr_t vs. long int . Eu observei que incrementar os endereços de memory (por exemplo, através da aritmética de pointers manuais) difere por tipo de dado. Por exemplo, incrementar um ponteiro de char adiciona 1 ao endereço de memory, enquanto que incrementar um ponteiro int adiciona 4, […]