Memory Allocation - Programming

Q1:

How many bytes of memory will the following code reserve?
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int *p;
    p = (int *)malloc(256 * 256);
    if(p == NULL)
        printf('Allocation failed');
    return 0;
}

A 65536

B Allocation failed

C Error

D No output

ANS:A - 65536

Hence 256*256 = 65536 is passed to malloc() function which can allocate upto 65535. So the memory allocation will be failed in 16 bit platform (Turbo C in DOS). If you compile the same program in 32 bit platform like Linux (GCC Compiler) it may allocate the required memory.