edited by
371 views
0 votes
0 votes
#include<stdio.h>
int main() {
     int *p; 
     p = (int *)malloc(20); 
     printf("%d\n", sizeof(p)); 
     free(p); 
     return 0; 
}

malloc(20) reserves 20 bytes, why output is 8?

edited by

1 Answer

0 votes
0 votes
sizeof(int *)  is storing address of memory which is pointing to integer data but at last it is storing memory address so it depends on your machine 64 bit or 32 bit machine

sizeof(int ) is size of integer your compiler is supporting

Related questions

1 votes
1 votes
1 answer
1
jugnu1337 asked May 10, 2022
260 views
SOURCE NAME::: UNDERSTANDING POINTER IN C (BOOK) BY YASHWANT KANETKARmy answer is C am i right?
1 votes
1 votes
0 answers
2
aakash pandey asked Apr 30, 2022
281 views
We use character array to declare string in C. So, if I declare an array likecharacter ch[ ] = {‘a’,’k’,’a’,’/o’};and try printing ch[3] like :printf(“%...
0 votes
0 votes
0 answers
3
Anirudh Kaushal asked Apr 6, 2022
191 views
#include<stdio.h struct marks { int p:3; int c:3; int m:2; }; void main() { struct marks s = {2, -6, 5}; printf("%d %d %d", s.p, s.c, s.m); }What does p:3 means here ?
0 votes
0 votes
0 answers
4