malloc 结构体指针数组与结构体数组

2024-03-25

有什么区别

struct mystruct *ptr = (struct test *)malloc(n*sizeof(struct test));

and

struct mystruct **ptr = (struct test *)malloc(n*sizeof(struct test *));

它们都工作得很好,我只是好奇两者之间的实际区别。第一个分配结构数组,而第二个分配结构指针数组吗?另一种方式?另外,哪一个的内存占用较小?


第一个分配一个数组struct,另一个分配一个指针数组struct。在第一种情况下,您可以通过分配来写入字段ptr[0].field1 = value;立即,而在第二种情况下,您必须分配struct在进行实际写作之前。

放弃演员阵容是可以的malloc结果是C,所以你可以写

struct mystruct **ptr = malloc(n*sizeof(struct test *));
for (int i = 0; i != n ; i++) {
    ptr[i] = malloc(sizeof(struct test));
}
ptr[0]->field1 = value;
...
// Do not forget to free the memory when you are done:
for (int i = 0; i != n ; i++) {
    free(ptr[i]);
}
free(ptr);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

malloc 结构体指针数组与结构体数组 的相关文章

随机推荐