Perguntas com a marcação «free»

538
O que REALMENTE acontece quando você não libera após o malloc?

Isso tem sido algo que me incomoda há muito tempo. Todos nós somos ensinados na escola (pelo menos eu fui) que você DEVE libertar todos os indicadores que estão alocados. Estou um pouco curioso, porém, sobre o custo real de não liberar memória. Em alguns casos óbvios, como quando mallocé chamado...

385
Como o free sabe quanto liberar?

Na programação C, você pode transmitir qualquer tipo de ponteiro que desejar como argumento para liberar, como ele sabe o tamanho da memória alocada para liberar? Sempre que passo um ponteiro para alguma função, também preciso passar o tamanho (ou seja, uma matriz de 10 elementos precisa receber 10...

276
Como malloc () e free () funcionam?

Eu quero saber como malloce freetrabalhar. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout...

93
custo de operação atômica

Qual é o custo da operação atômica (qualquer um de comparar e trocar ou adicionar / decrementar atômico)? Quantos ciclos ele consome? Ele pausará outros processadores no SMP ou NUMA ou bloqueará os acessos à memória? Ele irá liberar o buffer de reordenamento na CPU fora de ordem? Quais efeitos...

82
Por que anular o valor de retorno do free?

Estou lendo um livro ( Programming with POSIX Threads by Butenhof, 1997) que usa C e me deparei com a seguinte linha: (void)free(data); Aqui, dataé apenas um ponteiro para uma estrutura alocada, data = malloc(sizeof(my_struct_t)); Por que o resultado de freeser lançado para void? Do meu...