Re: C++ havarující program

Tomáš Hamouz konfery.tomas.hamouz na seznam.cz
Pondělí Srpen 9 17:57:58 CEST 2021


Tak je to primárně aby se nemusel alokovat celý stack (co si pamatuju tak defaultně 0,5 MB), když běžná slušně napsaná aplikace využije max. desítky kB.
Bohužel pro dealokaci už žádná automatická funkce nebyla/není, četl jsem kdysi článek jak to "vyřešit ručně".

Ochrana statických proměnných je nejspíš jen příjemný bonus.

Tomáš



> 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áš

> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20210809/45627ca4/attachment.html>


Další informace o konferenci Hw-list