Sobes.tech
Junior — Middle

Šta podrazumeva prelivanje steka prilikom izvršavanja programa?

sobes.tech АИ

Одговор од АИ

Prelivanje steka (stack overflow) događa se kada program koristi više memorije steka nego što je dodijeljeno od strane operativnog sistema. Obično se događa zbog beskonačne ili vrlo duboke rekurzije, ili zbog dodjele prevelikih lokalnih varijabli.

Stek je područje memorije gdje se pohranjuju lokalne varijable i adrese povratka funkcija. Ako se stek preplavi, program se neočekivano zatvara s greškom.

Primjer beskonačne rekurzije koja uzrokuje prelivanje steka:

void Recursive()
{
    Recursive(); // poziv same sebe bez uvjeta izlaza
}

Recursive();

Da biste spriječili prelivanje steka, morate kontrolirati dubinu rekurzije i veličinu lokalnih podataka.