假设我有以下几点:
MyClass *__strong*matches = (MyClass*__strong*)calloc([myArray count], sizeof([MyClass class]));
如果要引用第二个指针matches
,我该写matches[1]
还是要写matches[4]
?我很困惑,因为我知道,指针占用4个字节,但我的程序崩溃是由于内存错误,如果我遵循的逻辑matches[4]
和填充时我的程序完美的作品matches
,如果我遵循的逻辑matches[1]
。
此外,如果我使用malloc
而不是calloc
?
这是matches[1]
因为编译器从类型(MyClass * __strong *matches
)知道指针所指向的项目(在您的情况下为指针)的大小,并使用该大小来确定如何编译索引操作。
为了进行比较,请考虑int x[4]
vs. char y[4]
,索引不是从数组开始到“字节偏移4”,而是从“项目4”开始,这里的项是int
(可能是4或8个字节)或char
(1个字节)。您的“数组”中有指针(可能是4或8个字节),编译器从类型中知道了。
高温超导
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句