Name: Anonymous 2011-09-06 9:12
I'm confused about how memory allocation works in C.
Consider the following code.
It returns
On the other hand
Consider the following code.
#include <stdio.h>
#include <stdlib.h>
int main(){
int a[5];
int *b;
b = malloc(sizeof(char) * 5);
printf("a = %lu b = %lu", sizeof(a), sizeof(b));
free (b);
return 0;
}It returns
sizeof(a) to be the actual size of the array a that I allocated. I thought C didn't keep any record of the size of arrays which was the reason why strings have to be null terminated so what's up with that? On the other hand
sizeof(b) returns just the size of the pointer not the size of the array. When I do free(b) how does it know how much memory to deallocate?