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

questionAnswers(3)

yourAnswerToTheQuestion