Esiste una chiamata per determinare le dimensioni dello stack di un thread in esecuzione? Ho cercato nella documentazione delle funzioni dei thread MSDN e non riesco a trovarne uno.dimensioni dello stack di thread su Windows (Visual C++)
risposta
Sebbene non ci sia un'API per scoprire direttamente la dimensione dello stack, lo spazio di indirizzo virtuale contiguo deve essere riservato fino alla dimensione massima dello stack: è solo che molto spazio non è ancora stato impegnato. È possibile usufruire di questo e effettuare due chiamate a VirtualQuery.
Per la prima chiamata, passare l'indirizzo di qualsiasi valore nello stack per ottenere l'indirizzo di base e la dimensione, in byte, dello spazio di stack impegnato. Su una macchina x86 in cui lo stack cresce verso il basso, sottrarre nuovamente la dimensione dall'indirizzo di base e VirtualQuery: questo ti darà la dimensione dello spazio riservato per lo stack (supponendo che tu non sia esattamente al limite delle dimensioni dello stack al momento). Sommando i due si ottiene naturalmente la dimensione totale dello stack.
È possibile ottenere la dimensione corrente impegnata dalla parte superiore e inferiore nella TEB. È possibile ottenere la riserva iniziale del processo e le dimensioni di commit dallo PE header. Ma non è possibile recuperare le dimensioni effettive passate a CreateThread, né esiste alcuna API per ottenere le restanti dimensioni di riservate o impegnate dallo stack corrente, vedere Thread Stack Size.
- 1. Dimensioni dello stack di thread sicuro?
- 2. C++ overflow dello stack
- 3. Browser Javascript Limite di dimensioni dello stack
- 4. Come segnalare un sovraccarico del buffer dello stack su Windows?
- 5. Stack C++ thread-safe
- 6. Ottieni traccia dello stack di un arresto anomalo in Windows senza installare Visual Studio? (C++)
- 7. OCAMLRUNPARAM non influenza le dimensioni dello stack
- 8. Messaggio di avviso relativo alle dimensioni dello stack
- 9. Dimensioni dello stack rimanente fino a quando si verifica un overflow dello stack
- 10. Come modificare le dimensioni dello stack per un programma .NET?
- 11. Aumenta le dimensioni dello stack in Linux con setrlimit
- 12. Posso ottenere le tracce dello stack di tutti i thread nella mia app C#?
- 13. Dimensioni dello sprite su diverse dimensioni dello schermo Andengine Android
- 14. Dimensioni dello schermo in Visual Basic
- 15. Problemi relativi alle dimensioni dello stack di attività Android?
- 16. Android: aumento delle dimensioni dello stack di chiamate
- 17. Overflow di stack di Visual Studio C++ con array 2D
- 18. Posso ottenere i limiti dello stack in C/C++?
- 19. Traccia dello stack nativo su ICS?
- 20. Problemi di visualizzazione della traccia dello stack C# in WinDbg
- 21. Le dimensioni dello stack diventano negative dopo l'istruzione
- 22. Traccia stack Java su Windows
- 23. Come sono le dimensioni dello stack del processo su linux relative a pthread, fork ed exec
- 24. Come aumentare le dimensioni dello stack in python
- 25. GetCPUDescriptorHandleForHeapStart corruzione dello stack
- 26. Ottenere traccia dello stack su Android NDK
- 27. Domande su pieghe e overflow dello stack
- 28. Spostamento dello stack su un posto specifico
- 29. Come evitare di cambiare la dimensione dello stack E evitare di ottenere un overflow dello stack in C#
- 30. Rilevamento dello stack pieno
Ulteriori informazioni qui: http://stackoverflow.com/questions/1740888/determining-stack-space-with-visual-studio/1747499#1747499 – Philip