我在结构中有一个数组,如下所示
struct st
{
....
int index[1];
....
}
当我想在函数内部使用数组时,如何增加结构中存在的数组的大小,比如6。
答案 0 :(得分:2)
您可能正在寻找struct hack。 Struct hack是一种允许您为struct内部的数组分配额外内存的技术。这是一个例子
struct str {
int value;
char ar[0];
};
int main()
{
struct str *s = malloc( sizeof(struct str) + 20 );
strncpy( s->ar,"abcd", 5);
printf("%s",s->ar);
return 0;
}
作为在结构末尾定义的数组,s->ar
将在sizeof(struct str)
中将{20}个字节添加到malloc
。
编辑,此技术只能应用于结构的最后一个成员。
答案 1 :(得分:1)
你可以试试这个:
struct st { ....
int index[6];
....
}
您也可以在C
中查看功能malloc()
和realloc()
旁注:
您可以检查STL容器,如std::vector,它封装了相关的内存管理。
答案 2 :(得分:1)
在堆栈上存在以这种方式定义的数组。为了动态更改大小,您需要使用malloc
realloc
和free
在堆上使用allocate。