2017-05-06 8 views
0

次のコードは、何とか正しい場合でも、EXC_BAD_ACCESSアドレス0x0エラーを引き起こしています。これは、関数を指す配列を実行するために使用されます。私が持っている番号でsizeof(draw);を変更すると、期待どおりに機能します。forループ(配列関数ポインタ)のEXC_BAD_ACCESS

for(int i = 0; i < sizeof(draw); i++) 
     draw[i](i); 

答えて

2

sizeof(draw)バイト数、項目の数ではなくで「描く」のサイズを返します。あなたが探しているでしょう(sizeof(draw)/sizeof(draw[0]))

+1

'draw'が実際には配列の崩壊の産物であった場合、これは正しく動作しません。 'std :: array'は要素の数を決定する' size() 'を持ち、渡されたときにはポインタには崩壊しないので、' std :: array'を使い、生の配列の使用法を削除する方が良いでしょう。 – PaulMcKenzie