Swiftでpointer being freed was not allocatedを解決する手段は?
Swiftを使用してアプリを作成しています。
METALを利用してGPGPUを試みているのですが、GPUから値を得た後に、
下記のエラーが表示され、プログラムが止まります。
malloc: *** error for object 0x102ca4000: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
自分なりには調べているつもりなのですが、何が原因が特定できません。
メッセージの通り、malloc_error_breakをセットしてみたのですが、
止まるところはほぼ変わらず、その解析の仕方も分かりません。
せめて、object 0x102ca4000が何を示しているのかが、
分かれば少しは要因を解析できそうだと思うのですが、それを調べる方法も分かりません。
問題解決に向けて、助言をいただければと思います。よろしくお願いいたします。
コード全部を載せるのもどうかと思い、このような形で質問していますが、
コードを記載すべきであれば、そのようにご指導いただければと思います。
(現在の自分では、原因のありそうなところだけピックアップすることが
難しそうなので、全部載せるようなことになりそうです。そのようにして
よいかどうか、のご意見でもいただければ幸いです。)
追記1;
コードを載せたが方がよいとのコメントをいただきましたので、Gistに載せました。
よろしくお願いいたします。
追記2;
残念ながら、まだ問題は解決されていませんが、今の所の状況を追記しておきます。
var outptr = outputVectors.withUnsafeMutableBufferPointer({
ptr -> UnsafeMutablePointer<FloatVector> in
return ptr.baseAddress
})
var resultData = NSData(bytesNoCopy: outputBuffer.contents(), length: vectorsByteLength)
resultData.getBytes(outptr, length: vectorsByteLength)
への変更では、エラー表示に変更はありませんでした。
偶然見つけられたのですが、上記object 0x102ca4000が指し示しているものが判明しました。
resultData: NSDataインスタンスのようです。
まだ調査中ですが、コメントいただいているごとく、C(C++)とのやりとりのところに問題が
あるのかも知れません。
ここで述べるべきではないのかも知れませんが、当方、昨年6月からObjecive-Cを
プログラム言語として、まともに勉強し始めたという状況もあり、METALのshading言語がObjective-Cと異なるC++系とのことで、そこを触るだけでも、かなり四苦八苦しております。
引き続き、ご助言をいただければと思います。