Pergunta

É bandeira compilador a um VS2005 C ++ como a bandeira java Xmx ??? M para que eu possa limitar o tamanho da pilha do meu aplicativo em execução no Windows.

Eu preciso limitar o tamanho da pilha para que eu possa encher a memória para descobrir a memória livre atual. (O código também funciona em um sistema embarcado, onde este é o melhor método para obter o uso de memória)

Foi útil?

Solução

Você pode querer olhar para saber se o utilitário gflags (no Windows Debugging Tools) pode fazer isso. Ele pode fazer um monte de outras coisas interessantes com a pilha de aplicativos nativos.

Outras dicas

Você pode definir o tamanho da pilha para o seu programa, definindo o tamanho em:

Linker -> System -> Heap Reserve Size

Ele também pode ser definido na linha de comando do compilador usando /HEAP:reserve

O tamanho da pilha depende do alocador usado. Também pode haver alguns chamam de API do Windows que limita a quantidade de memória que um processo pode alocar, mas eu não estou ciente de um e eu não me sinto como olhar para ele agora, desculpe. Mas, em geral, se você escrever seu próprio alocador (talvez apenas envolver o compilador fornecido malloc() ou operador new), você pode limitar artificialmente o tamanho da pilha dessa forma.

Como alternativa, se você tiver seu próprio alocador, mesmo que apenas um invólucro, você pode manter o controle de quanta memória foi alocado no total. Se você sabe a quantidade disponível, você pode simplesmente fazer alguma subtração e ser feito com a obtenção do total. Você também pode ser capaz de obter estatísticas de fragmentação, em seguida, como o maior bloco livre.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top