我已经阅读了一段时间,但我不确定是否找到了一个好的答案。
我正在尝试设置一个包含92个结构体的数组。它是固定长度的,因此不会改变,实际上就像一个查找表。我认为最好的方法是首先使用 calloc 分配内存,然后加载数据。
但是在阅读一些内容后,我发现很多人直接分配内存而没有使用 calloc 或 malloc ,像这样:
我正在尝试设置一个包含92个结构体的数组。它是固定长度的,因此不会改变,实际上就像一个查找表。我认为最好的方法是首先使用 calloc 分配内存,然后加载数据。
但是在阅读一些内容后,我发现很多人直接分配内存而没有使用 calloc 或 malloc ,像这样:
myStruct myData[92] = { {1,2}, {3,4}, ....};
我的第一个问题是是否更好地动态分配内存?我理解这是更好的解决方案,特别是如果数据不一定会一直使用。
我的第二个问题与初始化数据有关。我曾经读到可以使用 ... = {....};
初始化结构体,但编译器不接受这种方式。
以下是我目前的代码:
typedef struct {
int a;
int b;
} myStruct;
@implementation MyClass
static myStruct *myData;
-(id) init {
// ...
myData = (myStruct *) calloc(92, sizeof(myStruct));
myData[0] = {1,2}; // <=== Error ! Compiler says "Expected expression!"
// ...
static myStruct myData[92]
- user406009