C指针动态分配

时间:2013-02-02 06:19:49

标签: arrays pointers dynamic struct

如何为struct array指针动态分配内存。 例如:我有一个结构数组指针,大小为1024,但如果我需要增加大小怎么做呢? 我需要动态定义arr大小。对于初始化,我将大小保持为1024。 我需要在超过分配时增加空间,如何增加它?

2 个答案:

答案 0 :(得分:1)

realloc()。像

这样的东西
struct foo *ptr;
ptr = malloc(sizeof(*ptr) * 1024);

// later
struct foo *tmp = realloc(ptr, sizeof(*ptr) * 2048);
if (tmp) {
    ptr = tmp;
} else {
    // something nasty happened
    free(ptr);
    exit(-1);
}

答案 1 :(得分:1)

对于动态内存分配,使用array implemented using linked lists会有所帮助。 您可以使用malloc()函数将内存分配给现有结构节点。

如果希望结构对象中的数组增加其内存,则可以使用链表而不是数组内部结构。