简体   繁体   中英

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(*))

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!

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM