titus
titus

Reputation: 5784

malloc pointer to array

int (*p)[2];
p=(int(*))malloc(sizeof(int[2])*100);

What is the right way to malloc a pointer to an array? I can't figure out the part with (int(*))

Upvotes: 5

Views: 15923

Answers (2)

another.anon.coward
another.anon.coward

Reputation: 11405

Posting comments as answer:
In C you should not to cast the return value of malloc. Please refer this post on SO for more information regarding why typecasting return value of malloc is not a good idea in C. And if for some reason you really really want to cast, it should be (int(*)[2]). (int(*)) is int *. The size passed to malloc looks fine (allocating size for 100 pointers to array of 2 ints). So you should be doing

int (*p)[2];
p=malloc(sizeof(int[2])*100); 

Hope this helps!

Upvotes: 9

Fooberman
Fooberman

Reputation: 646

It's not clear what you want here. If you want 100 int pairs, for example, arranged as an array of pointers to int (where each pointer points to exactly two ints), then you need to call malloc 100 times on 100 pointers to int, allocating two integers each time.

It just doesn't' make sense to "malloc a pointer to an array". You can malloc an array, and assign that address to a pointer though, or you can malloc an array of pointers. But what you've asked is not clear.

Upvotes: -3

Related Questions