我声明了这个变量:
float (**explosions)[4];
这将指向指向具有4个浮点的浮点数组的内存块的指针的内存块。
当创建指向浮点数组的内存块的指针的内存块时,我应该在这里放些什么。我应该使用空指针吗?这是一个选择,但不是一个好的选择。
explosions = realloc(explosions,sizeof(What goes here? It will be the size of a pointer to an array of 4 floats) * explosion_number);
在为数组创建内存块时,我猜这是否合适?
explosions[explosion_number] = malloc(sizeof(float) * 64);
这将使16个浮点数组有4个元素。我需要在内存中有16个这样的数组,这样我就可以删除多余的内存,这样我就可以将指向这些数组的指针设为空,这样我就可以知道这些数组在冗余之后什么时候被释放,不需要再进行处理。以防你想知道。
谢谢你的帮助。
最佳答案
sizeof
可以使用括号内的类型或表达式。当您执行sizeof <expression>
时,只检查表达式的类型,但不计算它,因此取消引用空指针等不会有问题。
这意味着您可以像这样编写realloc
和malloc
调用:
explosions = realloc(explosions, sizeof(*explosions) * explosion_number);
explosions[explosion_number-1] = malloc(16 * sizeof(**explosions));
// -1 because explosions array runs from 0 to (explosion_number-1)