What is the output?

What could be the output for following code segment and why:

int *ptr;

ptr = malloc(100);

ptr++;

free(ptr);

Comments

  1. behavior undefined...the program may crash because free should be passed the address returned by malloc, calloc or realloc only...the exact reason for this is unknown to me.
    (may be there is a list of dynamically allocated memory. whenever a call to free is made, this list is checked and if the adress is found, it is made available for allocation by adding it to the list of free chunks and if not, then it leads to an undefined behavior).

    ReplyDelete
  2. yes you are right behaviour of this program is undefined because when you allocate memory using malloc or calloc etc. some meta-data (size of allocated memory,next free chain of memory etc.)is stored one location before the address returned by these functions.so when you do ptr++,you are unable to retrieve that information,so program crashes.

    ReplyDelete

Post a Comment

Popular posts from this blog