Core Dump

Core Dump/Segmentation fault is a specific kind of error caused by accessing memory that “does not belong to you.” 
 

•When a piece of code tries to do read and write operation in a read only location in memory or freed block of memory, it is known as core dump.
•It is an error indicating memory corruption.
Common segmentation fault scenarios: 
 

Modifying a string literal : 
The below program may crash (gives segmentation fault error) because the line *(str+1) = ‘n’ tries to write a read only memory. 


int main()
{

   char *str; 
 

   /* Stored in read only part of data segment */

   str = "GfG";     
 

   /* Problem: trying to modify read only memory */

   *(str+1) = 'n'; 

   return 0;
}
•Accessing an address that is freed : 
Here in the below code, the pointer p is dereferenced after freeing the memory block, which is not allowed by the compiler. So it produces the error segment fault or abnormal program termination at runtime. 
Example: 
// C++ program to illustrate
// Core Dump/Segmentation fault
#include <iostream>

using namespace std;
 

int main(void)
{

    // allocating memory to p

    int* p = (int*) malloc(8*sizeof(int));

     

    *p = 100;

     

    // deallocated the space allocated to p

    free(p);

     

    // core dump/segmentation fault

    // as now this statement is illegal

    *p = 110;

     

    return 0;
}
 
// This code is contributed by shivanisinghss2110


Posted on by