Re: C++ havarující program

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Srpen 9 17:40:28 CEST 2021


Ono je to myslim bezne u vsech modernich OS s virtualizaci pameti. Asi 
mozna ani nejde o to, ze by stranka pameti byla chranena, ale proste 
nema pridelenou fyzickou pamet. Aplikace ma k dispozici teoreticky 4GB 
(32 bit) pameti ale fyzicka pamet se mapuje v nekterych oblastech az v 
pripade potreby. Stejne je to myslim u haldy. Pristup vyvola vyjimku a 
OS to osetri. Pokud zjisti, ze chce zasobnik vetsi, nez je nastaveny 
limit, tak aplikaci odstreli.


Dne 09.08.2021 v 16:37 Petr Labaj napsal(a):
> 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ší informace o konferenci Hw-list