dre*_*kka 4 arrays struct memory-management objective-c calloc
我已经读了一段时间了,我不确定我找到了一个好的答案.
我正在尝试设置一个包含92个结构的数组.它是一个固定的长度,不会改变,因为它实际上是一个查找表.我认为最好的方法是首先分配内存,calloc
然后加载数据.
但经过一些阅读后,我看到很多人直接分配内存而没有calloc
或malloc
喜欢这样
myStruct myData[92] = { {1,2}, {3,4}, ....};
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是动态分配内存是否更好?我的理解是这是一个更好的解决方案.特别是如果数据不一定会一直使用.
我的第二个问题是关于初始化数据.我曾经读过我可以初始化一个结构,... = {....};
但编译器不接受它.
这是我到目前为止的代码:
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!"
// ...
Run Code Online (Sandbox Code Playgroud)
你的代码看起来像Objective-C,这是正确的吗?
如果您知道数组中有多少元素(并且它是一个理智的处理器和操作系统),那么显式定义它总是更简单.
无论何时动态分配数组,都需要防止出现问题,这会使代码更难理解.
如果它确实是一个查找表,并且所有值在编译时都是已知的,那么您可以初始化它:
struct {
int a;
int b;
} myStructDate[92] = { {1, 2}, {3, 4}, ... {181, 182}, {183, 184} };
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3927 次 |
最近记录: |