Very Large Stack Variables
The other major cause of a stack overflow results from an attempt to allocate more memory on the stack than will fit, for example by creating local array variables that are too large. For this reason some authors recommend that arrays larger than a few kilobytes should be allocated dynamically instead of as a local variable.
An example of a very large stack variable in C:
int foo { double x; }The declared array consumes 8 megabytes of data (assuming each double is 8 bytes); if this is more memory than is available on the stack (as set by thread creation parameters or operating system limits), a stack overflow will occur.
Stack overflows are made worse by anything that reduces the effective stack size of a given program. For example, the same program being run without multiple threads might work fine, but as soon as multi-threading is enabled the program will crash. This is because most programs with threads have less stack space per thread than a program with no threading support. Similarly, people new to kernel development are usually discouraged from using recursive algorithms or large stack buffers.
Read more about this topic: Stack Overflow
Famous quotes containing the words large, stack and/or variables:
“If the hero is not a person, the emblem
Of him, even if Xenophon, seems
To stand taller than a person stands, has
A wider brow, large and less human
Eyes and bruted ears: the man-like body
Of a primitive.”
—Wallace Stevens (18791955)
“Farewell to barn and stack and tree,
Farewell to Severn shore.
Terence, look your last at me,
For I come home no more.”
—A.E. (Alfred Edward)
“The variables of quantification, something, nothing, everything, range over our whole ontology, whatever it may be; and we are convicted of a particular ontological presupposition if, and only if, the alleged presuppositum has to be reckoned among the entities over which our variables range in order to render one of our affirmations true.”
—Willard Van Orman Quine (b. 1908)