Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Memory allocation in C

Name: Anonymous 2011-09-06 9:12

I'm confused about how memory allocation works in C.
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?

Name: Anonymous 2011-09-06 10:27

Malloc is systems way of stealing your memory and offering it in bits. Define a huge static array and write your own routine which will allow full control over it.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List