【发布时间】:2017-05-06 23:27:47
【问题描述】:
以下代码导致 EXC_BAD_ACCESS 地址 0x0 错误 - 即使我以某种方式正确。它用于执行指向函数的数组。如果我用我拥有的号码更改sizeof(draw);,它就会按预期工作。
for(int i = 0; i < sizeof(draw); i++)
draw[i](i);
【问题讨论】:
以下代码导致 EXC_BAD_ACCESS 地址 0x0 错误 - 即使我以某种方式正确。它用于执行指向函数的数组。如果我用我拥有的号码更改sizeof(draw);,它就会按预期工作。
for(int i = 0; i < sizeof(draw); i++)
draw[i](i);
【问题讨论】:
sizeof(draw) 以字节数而不是项目数返回“draw”的大小。您可能正在寻找(sizeof(draw)/sizeof(draw[0]))
【讨论】:
draw 实际上是一个指针,它是一个数组被衰减的产物,这将无法正常工作。最好使用std::array 并放弃原始数组的使用,因为std::array 有size() 来确定元素的数量,并且在传递时不会衰减为指针。