Search results
Results From The WOW.Com Content Network
This type of stack is also known as an execution stack, program stack, control stack, run-time stack, or machine stack, and is often shortened to simply the "stack". Although maintenance of the call stack is important for the proper functioning of most software , the details are normally hidden and automatic in high-level programming languages .
Stack Overflow is a question-and-answer website for computer programmers. It is the flagship site of the Stack Exchange Network . [ 2 ] [ 3 ] [ 4 ] It was created in 2008 by Jeff Atwood and Joel Spolsky .
A typical call stack, storing local data and call information for multiple levels of procedure calls. This stack grows downward from its origin. The stack pointer points to the current topmost datum on the stack. A push operation decrements the pointer and copies the data to the stack; a pop operation copies data from the stack and then ...
A stack buffer overflow can be caused deliberately as part of an attack known as stack smashing. If the affected program is running with special privileges, or accepts data from untrusted network hosts (e.g. a webserver ) then the bug is a potential security vulnerability .
The stack is often used to store variables of fixed length local to the currently active functions. Programmers may further choose to explicitly use the stack to store local data of variable length. If a region of memory lies on the thread's stack, that memory is said to have been allocated on the stack, i.e. stack-based memory allocation (SBMA).
Some malware specifically targets a program's call stack and takes advantage of the stack's inherently recursive nature. [15] Even in the absence of malware, a stack overflow caused by unbounded recursion can be fatal to the program, and exception handling logic may not prevent the corresponding process from being terminated. [16]
One disadvantage of the call stack mechanism is the increased cost of a procedure call and its matching return. [ clarification needed ] The extra cost includes incrementing and decrementing the stack pointer (and, in some architectures, checking for stack overflow ), and accessing the local variables and parameters by frame-relative addresses ...
However, for language implementations which store function arguments and local variables on a call stack (which is the default implementation for many languages, at least on systems with a hardware stack, such as the x86), implementing generalized tail-call optimization (including mutual tail recursion) presents an issue: if the size of the ...