忍者ブログ

佐崎司と愉快な仲間達

ゲーム、アニメ、CG、iOS開発など思いついたことを記事にしています。 管理人が3人いますので、記事にまとまりはないと思います。 iPhoneアプリのレビュー依頼も受け付けています。

iOSでの参照渡しによるエラー発生原因

わか

iOSでのNSDataの参照渡しにて、exc_bad_access発生原因を記載します。

NSMutableData *data = [[NSMutableData alloc] initwithLength:len];
func((char*)[data bytes]);

- (void)func(char* data) {
    ・・・
    libFunc(data);
    ・・・
}

上記コードのようにdata変数を参照渡しでfunc関数内で使用してました。
func関数内では某ライブラリを呼び出しており、引数でdataを渡していました。
すると時折、libFunc実行時に例外エラーが発生し、アプリがクラッシュしました。

libFuncが原因かと、参照しているライブラリを解析してましたが原因分からず。

原因はライブラリではないのかと自分のソースを解析したらその通りでした。
原因は1行目のlen変数が条件によっては0になることが分かりました。
そのため、libFunc内でmallocエラーが発生していたようでした。

今後ライブラリを疑う前に自分のソースコードを疑うようにします・・・




拍手[0回]

PR