1

C関数を呼び出すpythonプログラムがあります。変更可能な文字を含むいくつかの構造体を c 関数に送信すると、c 関数が構造体を埋めます。

class myS(構造): fields = [("x", c_int), ("buffer", 100*c_char)]

これを C 関数に送信すると、C 関数がこの構造体に値を入力します。私のプログラムは非常にうまく動作しますが、戻った後にエラーがスローされます

* glibc が検出されました * python: free(): 次のサイズが無効です (高速):

その後プログラムを実行すると、コードのわずかな変更 (print "hi" など) で次の 3 つのエラーのいずれかが表示されます。

* glibc が検出されました * python: malloc(): 次のサイズが無効です (高速):

* glibc が検出されました * python: free(): 次のサイズが無効です (高速):

セグメンテーション違反

私を助けてください。前もって感謝します。

4

1 に答える 1

1

おそらくC関数に渡されたメモリの終わりを超えて書き込むことによって、メモリアリーナを単純かつ単純に破損しましたが、ソースコードを見なければ、確かなことはわかりません.

このメッセージはglib、メモリ割り当てアカウンティング情報が破損していることを が検出した場合にのみ表示されます。

于 2012-04-05T13:05:23.413 に答える