Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)
-   -   how to find the size allocated by malloc (http://www.go4expert.com/forums/size-allocated-malloc-t12261/)

naveenrai88 20Jul2008 09:13

how to find the size allocated by malloc
 
Hi,
following is the code that i wrote: :happy:
Code:

#include <stdio.h>
int main()
{
        int *ptr;
        ptr = (int *)malloc(256*256*256*256-1);
        printf("Sizeof int is %d\n", sizeof(int));
        if(ptr == NULL)
                printf("Allocation failed");
        else
                printf("Allocation succedded");
        return 1;
}

i ran this code on gcc complier. now the warning that i get is
*************************
try.c: In function ‘main’:
try.c:6: warning: incompatible implicit declaration of built-in function ‘malloc’
try.c:6: warning: integer overflow in expression
try.c:6: warning: integer overflow in expression
***************************

Q 1) since the sizeof (int) =4 so why integer overflow warning is being displayed???
Q 2) how can i calculate the size of the memory chunck allocated by the malloc function????
( if i write "ptr = (int *)malloc(256*256*256*256+1000);" even though, i get these warnings and get the output of the program as "Allocation succedded: ):surprised
Kindly explain why am i getting the output as mentioned above even though the value mentioned in malloc is overflowing the unsigned int range.. :cryin:

thanks in advance

xpi0t0s 21Jul2008 13:17

Re: how to find the size allocated by malloc
 
Why do you want to allocate 4GB of RAM? Are you on a 64-bit system?
Think about how you might represent 256*256*256*256+1000 in 32 bits.
Also think about how 256*256*256*256-1 might be represented, and what the value of the MSB will be, and what malloc will do if it's asked to allocate a negative amount of memory.


All times are GMT +5.5. The time now is 02:54.