Re: C++ havarující program

Petr Labaj labaj na volny.cz
Pondělí Srpen 9 16:37:44 CEST 2021


Teď budu určitě působit jako lunetic, že jsem to nevěděl.
Ale ta metoda, že se mezi zásobník a statické proměnné vloží protected 
stránka, mi připadá jako hodně chytré řešení. Že pak sestupující 
zásobník nemůže přepsat ta statická data (pokud jsem to teda správně 
pochopil).
Takže díky za tuhle informaci.

PL

***********************

Dne 9.8.2021 v 14:06 Tomáš Hamouz napsal(a):
> Re: C++ havarující program Sice pozdě, ale přece.
> Pokud se ve Win nic nezměnilo, tak se fyzicky při startu vlákna 
> alokovaly pro zásobník jen dvě stránky, z toho první RW a druhá 
> protected. V okamžiku jakéhokoliv přístupu k té protected stránce se 
> vyvolala výjimka, ve které se buď přialokovala další stránka (tedy 
> stávající se změnila na RW a přidala se nová, označená jako 
> protected), nebo, při překročení limitu, se vygenerovala chyba.
> V uvedeném příkladu vlastní definice data[] nic nealokuje, jen posune 
> SP. K přístupu dojde až v okamžiku kdy se vytváří stack frame při 
> volání další funkce, tím je dané zpoždění mezi "přealokací" a 
> vyvoláním chyby.
>
> Tomáš



Další informace o konferenci Hw-list