What is stack smashing in C++?

Stack smashing

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.

Example of stack smashing

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.

Updating array out of boundary
Updating array out of boundary

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;
}

Code explanation

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

Copyright ©2025 Educative, Inc. All rights reserved