Witam. Chciałbym mieć większą pewność że stos nie nadpisze mi danych. Czy deklarując zmienne jako globalne, i wszystkie zmienne w funkcjach jako static spowoduję że stos będzie mniej wykorzystywany? Oczywiście nie licząc funkcji bibliotecznych.
Stos bedzie mniej wykorzystywany - to prawda. Jednak bedzie mniej miejsca na niego. Przykład - w jednej procedurze potrzebujesz lokalnie zmienną dwubajtową. W drugiej również. Jeśli obie zrobisz static wówczas nie bedą zajmowały miejsca na stosie, ale razem zajmą 4 bajty miejsca, o które skróci sie miejsce na stos. Czyli w przypadku jeśli nie są one razem wywyoływane zwiekszasz prawdopodobieństwo nadpisania danych przez stos. Możesz ocywiście te dane umieścic w jednym miejscu pamieci - jednej zmiennej ale zmniejsza to czytelność programu. Lepiej jest jednak dawać, gdzie się da zmienne lokalne, a w trakcie testowania sprawdzić głębokość wnikania stosu w pamięć.
A nie lepiej obliczać szczytową zajętość stosu (np. wcześniej wypełnić cały obszar stosu stałą wartością a potem sprawdzać, gdzie najniżej się zaczyna) przez dłuższy czas i ew. dodatkowo sprawdzać na przykład co sekundę, czy nie przekroczono zadanej głębokośći?
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.