Stack smashing in C++ is a form of buffer overflow. It happens when a program writes more data to the stack than its available memory allocation, causing adjacent memory locations to be overwritten.
Here’s an example of an array containing the five numbers:
int A[5] = {1,2,3,4,5};
A[6] = 2;
If we attempt to update the 6th index, the message “stack smashing detected” will be displayed on the console, and the program will end abruptly.
To grasp the concept of such behavior, refer to the illustration below.
Let’s write a complete code and run it to verify the result below:
#include <iostream>using namespace std;int main() {int A[5] = {1,2,3,4,5},i;for(i=0;i<10;i++)A[i]=2;}
Lines 6-7: Inside the loop, it will access array elements beyond its allocated size
, resulting in “stack smashing detected”. Since the array A
has a size of 5
in line 5, accessing elements beyond index 4
(as in A[i] = 2
if i
>= 5) leads to accessing memory locations outside the valid range of the array.
Free Resources