0

を含む共有ライブラリ内にグローバル変数がありint*ます。

プログラムにメモリを割り当てようとすると、プログラム内double free or memory corruption errorから fromを受け取りglibcます。面白いことに、最新バージョンの glibc ではこれは起こりません。

コードは次のようになります。

typedef struct{ int a; int b; mytype_t *t; } A

私が持っている図書館では A *a;

コード内 a = malloc ( sizeof ( A ) ); a->t = malloc ( sizeof( *t) );

最初の malloc は問題なく動作しますが、2 番目の malloc を実行したときにのみ問題が発生します。a->list を解放しようとすると、上記のエラーが発生します。aa->list の前に解放されません。

ありがとうございました。

**EDIT**

問題を修正しましたが、その理由はよくわかりません。malloc の代わりに calloc を使用し、 の代わりに;malloc( sizeof(*t) )を使用しました。calloc ( sizeof ( mytype_t ) )

4

0 に答える 0