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).
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.
Given an integer n, write a function that returns count of trailing zeroes in n!. Examples: Input: n = 5 Output: 1 Factorial of 5 is 20 which has one trailing 0. Input: n = 20 Output: 4 Factorial of 20 is 2432902008176640000 which has 4 trailing zeroes. Input: n = 100 Output: 24
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.
ReplyDelete(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).
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