//改变柔性函数的内存空间大小
//柔性元素,在最后一个元素的大小是未知大小
struct s{
int n;
int arr[0];//未知大小
};
int main()
{
struct s* ps = (struct s*)malloc(sizeof(struct s) + 5 * sizeof(int));
ps->n = 100;//
// n的内存 arr的内存空间可以改变
int i = 0;
for (i = 0; i < 5; i++)
{
ps->arr[i] = i;
}
printf("%d\n", ps->n);
for (i = 0; i < 5; i++)
{
printf("%d\n", ps->arr[i]);
}
struct s* str = realloc(ps, 44);
for (i = 5; i < 10; i++)
{
str->arr[i] = i;
}
for (i = 5; i < 10; i++)
{
printf("%d\n", str->arr[i]);
}
free(str);
str = NULL;
/*free(ps);
ps = NULL;*/
//struct s* ps = (struct s*)malloc(sizeof(struct s));
//ps->arr = malloc(10 * sizeof(int));//改变柔性元素的大小
return 0;
}