logo

CuriousTab

CuriousTab

Discussion


Home C Programming Memory Allocation Comments

  • Question
  • 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;
    }
    


  • Options
  • A. 65536
  • B. Allocation failed
  • C. Error
  • D. No output

  • Correct Answer
  • Allocation failed 

    Explanation
    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.


    Memory Allocation problems


    Search Results


    • 1. What will be the output of the program?
      #include<stdio.h>
      #include<string.h>
      
      int main()
      {
          char *s;
          char *fun();
          s = fun();
          printf("%s\n", s);
          return 0;
      }
      char *fun()
      {
          char buffer[30];
          strcpy(buffer, "RAM");
          return (buffer);
      }
      

    • Options
    • A. 0xffff
    • B. Garbage value
    • C. 0xffee
    • D. Error
    • Discuss
    • 2. What will be the output of the program (sample.c) given below if it is executed from the command line?
      cmd> sample Jan Feb Mar
      /* sample.c */
      #include<stdio.h>
      #include<dos.h>
      
      int main(int arc, char *arv[])
      {
          int i;
          for(i=1; i<_argc; i++)
              printf("%s ", _argv[i]);
          return 0;
      }
      

    • Options
    • A. No output
    • B. sample Jan Feb Mar
    • C. Jan Feb Mar
    • D. Error
    • Discuss
    • 3. What will be the output of the program (sample.c) given below if it is executed from the command line (turbo c under DOS)?
      cmd> sample Good Morning
      /* sample.c */
      #include<stdio.h>
      
      int main(int argc, char *argv[])
      {
          printf("%d %s", argc, argv[1]);
          return 0;
      }
      

    • Options
    • A. 3 Good
    • B. 2 Good
    • C. Good Morning
    • D. 3 Morning
    • Discuss
    • 4. What will be the output of the program (myprog.c) given below if it is executed from the command line?
      cmd> myprog 10 20 30
      /* myprog.c */
      #include<stdio.h>
      
      int main(int argc, char **argv)
      {
          int i;
          for(i=0; i<argc; i++)
              printf("%s\n", argv[i]);
          return 0;
      }
      

    • Options
    • A. 10 20 30
    • B. myprog 10 20
    • C. myprog 10 20 30
    • D. 10 20
    • Discuss
    • 5. What will be the output of the program (sample.c) given below if it is executed from the command line?
      cmd> sample monday tuesday wednesday thursday
      /* sample.c */
      #include<stdio.h>
      
      int main(int argc, char *argv[])
      {
          while(--argc>0)
              printf("%s", *++argv);
          return 0;
      }
      

    • Options
    • A. sample monday tuesday wednesday thursday
    • B. monday tuesday wednesday thursday
    • C. monday tuesday thursday
    • D. tuesday
    • Discuss
    • 6. What will be the output of the program?
      #include<stdio.h>
      #include<stdlib.h>
      
      int main()
      {
          union test
          {
              int i;
              float f;
              char c;
          };
          union test *t;
          t = (union test *)malloc(sizeof(union test));
          t->f = 10.10f;
          printf("%f", t->f);
          return 0;
      }
      

    • Options
    • A. 10
    • B. Garbage value
    • C. 10.100000
    • D. Error
    • Discuss
    • 7. What will be the output of the program (16-bit platform)?
      #include<stdio.h>
      #include<stdlib.h>
      
      int main()
      {
          int *p;
          p = (int *)malloc(20);
          printf("%d\n", sizeof(p));
          free(p);
          return 0;
      }
      

    • Options
    • A. 4
    • B. 2
    • C. 8
    • D. Garbage value
    • Discuss
    • 8. What will be the output of the program?
      #include<stdio.h>
      #include<stdlib.h>
      
      int main()
      {
          int *p;
          p = (int *)malloc(20); /* Assume p has address of 1314 */
          free(p);
          printf("%u", p);
          return 0;
      }
      

    • Options
    • A. 1314
    • B. Garbage value
    • C. 1316
    • D. Random address
    • Discuss
    • 9. Assume integer is 2 bytes wide. What will be the output of the following code?
      #include<stdio.h>
      #include<stdlib.h>
      #define MAXROW 3
      #define MAXCOL 4
      
      int main()
      {
          int (*p)[MAXCOL];
          p = (int (*) [MAXCOL])malloc(MAXROW *sizeof(*p));
          printf("%d, %d\n", sizeof(p), sizeof(*p));
          return 0;
      }
      

    • Options
    • A. 2, 8
    • B. 4, 16
    • C. 8, 24
    • D. 16, 32
    • Discuss
    • 10. Assume integer is 2 bytes wide. How many bytes will be allocated for the following code?
      #include<stdio.h>
      #include<stdlib.h>
      #define MAXROW 3
      #define MAXCOL 4
      
      int main()
      {
          int (*p)[MAXCOL];
          p = (int (*) [MAXCOL])malloc(MAXROW *sizeof(*p));
          return 0;
      }
      

    • Options
    • A. 56 bytes
    • B. 128 bytes
    • C. 24 bytes
    • D. 12 bytes
    • Discuss


    Comments

    There are no comments.

Enter a new Comment