O uso da memória não diminui quando o free () é usado
Eu estou escrevendo OS lockless independente fila, até agora funciona muito bem, mas há um pequeno problema com gerenciamento de memória. Não tenho certeza se o seu problema gcc ou o meu. Problema: A memória aumenta quando o elemento é adicionado à lista, mas quando o elemento é removido da lista (livre (elementPointer);) o uso da memória não é alterado.
MAS quando uso pthreads, N produtores e M consumidores(1<N<20, 1<M<20)
o uso da memória é de aproximadamente 10mb o tempo todo (ao tentar adicionar e remover elementos de ~ 10kk), então parece que o free está funcionando.
E engraçado é que no VS 2010 (mesmo código, sem threads) free funciona bem, a memória é liberada (assistiu gerenciador de tarefas).
Fiz teste, adicionei 1kk elementos, depois de somar todos, tirei um por um todos os elementos (sem threads).
Linux - 0.08 segundos
Windows ~ 57 segundos
Linux (sem livre) - 0.07 segundos
Windows (sem livre) - 0,9 segundos
Então, a questão é: por que a memória não é liberada no Linux C quando nenhum encadeamento é usado? Eu posso postar código, se necessário.
Versão do CCG: 4.4.3