C Programming - Memory Allocation
Exercise "Act well your part; there all honor lies."
- Alexander Pope
1.
Point out the correct statement will let you access the elements of the array using 'p' in the following program?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j;
int(*p)[3];
p = (int(*)[3])malloc(3*sizeof(*p));
return 0;
}
A.
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d", p[i+j]);
}
B.
for(i=0; i<3; i++)
printf("%d", p[i]);
C.
for(i=0; i<3; i++)
{
for(j=0; j<3; j++)
printf("%d", p[i][j]);
}
D.
for(j=0; j<3; j++)
printf("%d", p[i][j]);
Answer: Option D
Explanation:
No answer description available for this question. Let us discuss .
2.
Which of the following statement is correct prototype of the malloc() function in c ?
A.
int* malloc(int); B.
char* malloc(char); C.
unsigned int* malloc(unsigned int); D.
void* malloc(size_t);
Answer: Option E
Explanation:
No answer description available for this question. Let us discuss .
3.
Point out the correct statement which correctly free the memory pointed to by 's' and 'p' in the following program?
#include<stdio.h>
#include<stdlib.h>
int main()
{
struct ex
{
int i;
float j;
char *s
};
struct ex *p;
p = (struct ex *)malloc(sizeof(struct ex));
p->s = (char*)malloc(20);
return 0;
}
A.
free(p); , free(p->s); B.
free(p->s); , free(p); C.
free(p->s); D.
free(p);
Answer: Option A
Explanation:
No answer description available for this question. Let us discuss .
4.
Point out the correct statement which correctly allocates memory dynamically for 2D array following program?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p, i, j;
/* Add statement here */
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
p[i*4+j] = i;
printf("%d", p[i*4+j]);
}
}
return 0;
}
A.
p = (int*) malloc(3, 4); B.
p = (int*) malloc(3*sizeof(int)); C.
p = malloc(3*4*sizeof(int)); D.
p = (int*) malloc(3*4*sizeof(int));
Answer: Option C
Explanation:
No answer description available for this question. Let us discuss .