Arrays C指针动态分配

Arrays C指针动态分配,arrays,pointers,dynamic,struct,Arrays,Pointers,Dynamic,Struct,如何为结构数组指针动态分配内存。 我有一个大小为1024的结构数组指针,但是如果我需要增加它的大小,怎么做呢? 我需要动态定义arr大小。对于初始化,我将大小保持为1024。 我以后需要增加空间,当空间分配超过时,如何增加空间???。差不多 struct foo *ptr; ptr = malloc(sizeof(*ptr) * 1024); // later struct foo *tmp = realloc(ptr, sizeof(*ptr) * 2048); if (tmp) {

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

。差不多

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);
}

对于动态内存分配,使用使用链表实现的数组将有所帮助。 您可以使用
malloc()
函数为现有结构节点分配内存


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

你能发布结构声明/定义吗?就像我有结构abc{};abc*arr[1024];现在我需要把arr[1024]改为2048,你不能这样做。您可以做的一件类似的事情是可变长度数组,但它仍然不相同。