2011-06-20 11 views
0

Cコードで次のエラーが発生しました。*** glibcが検出されました***:free():Cコードで無効な次のサイズ(高速)

   *** glibc detected *** : free(): invalid next size (fast) 

私はコードhere

私はこのエラーを取得していますなぜ誰も私を助けてもらえを貼り付けています。

ありがとうございます。

** glibc detected *** ./bplus: free(): invalid next size (fast): 0x000000000077f1b0 *** 
    ======= Backtrace: ========= 
/lib/libc.so.6(+0x775b6)[0x7fae8e5615b6] 
/lib/libc.so.6(cfree+0x73)[0x7fae8e567e83] 
./bplus[0x401acf] 
./bplus[0x401caf] 
/lib/libc.so.6(__libc_start_main+0xfd)[0x7fae8e508c4d] 
./bplus[0x400669] 
======= Memory map: ======== 
    00400000-00403000 r-xp 00000000 08:07 544621        
    00602000-00603000 r--p 00002000 08:07 544621        
    00603000-00604000 rw-p 00003000 08:07 544621        
    0077f000-007a0000 rw-p 00000000 00:00 0         [heap] 
    7fae88000000-7fae88021000 rw-p 00000000 00:00 0 
    7fae88021000-7fae8c000000 ---p 00000000 00:00 0 
    7fae8e2d3000-7fae8e2e9000 r-xp 00000000 08:07 147        /lib/libgcc_s.so.1 
    7fae8e2e9000-7fae8e4e8000 ---p 00016000 08:07 147       /lib/libgcc_s.so.1 
    7fae8e4e8000-7fae8e4e9000 r--p 00015000 08:07 147      /lib/libgcc_s.so.1 
    7fae8e4e9000-7fae8e4ea000 rw-p 00016000 08:07 147      /lib/libgcc_s.so.1 
    7fae8e4ea000-7fae8e664000 r-xp 00000000 08:07 943      /lib/libc-2.11.1.so 
    7fae8e664000-7fae8e863000 ---p 0017a000 08:07 943      /lib/libc-2.11.1.so 
    7fae8e863000-7fae8e867000 r--p 00179000 08:07 943      /lib/libc-2.11.1.so 
    7fae8e867000-7fae8e868000 rw-p 0017d000 08:07 943      /lib/libc-2.11.1.so 
    7fae8e868000-7fae8e86d000 rw-p 00000000 00:00 0 
    7fae8e86d000-7fae8e88d000 r-xp 00000000 08:07 488      /lib/ld-2.11.1.so 
    7fae8ea63000-7fae8ea66000 rw-p 00000000 00:00 0 
    7fae8ea88000-7fae8ea8c000 rw-p 00000000 00:00 0 
    7fae8ea8c000-7fae8ea8d000 r--p 0001f000 08:07 488      /lib/ld-2.11.1.so 
    7fae8ea8d000-7fae8ea8e000 rw-p 00020000 08:07 488      /lib/ld-2.11.1.so 
    7fae8ea8e000-7fae8ea8f000 rw-p 00000000 00:00 0 
    7fff8d3c9000-7fff8d3de000 rw-p 00000000 00:00 0       [stack] 
    7fff8d3ff000-7fff8d400000 r-xp 00000000 00:00 0       [vdso] 
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0     [vsyscall] 
    Aborted 

[EDIT 2]試験のため

Iは異なる領域にprintfを使用しています。プログラムは、free関数が呼び出された行のすぐ上にある 行まで印字します。

+3

問題を実証している*最小限の*コンパイル可能な例にコードをカットし、質問に直接貼り付けてください。 –

+0

'free()'の呼び出しのどれがエラーの原因になっていますか? – marnir

+0

私はどのフリーがエラーの原因であるかについてはあまりよく分かりません。 – thetna

答えて

2

コードのこのビットは、おそらく問題に貢献している(ライン62で始まる):

for (i =0 ; i < order ; i++) { /*Stores the leaf key pointer pairs and new key pointer pairs in order form in temp. storage*/ 
     if (i == InsertionIndex) { 
      i =i+1; 
     } 
     temp_keys[i] = bplus_IndividualKeyBplus(bplusLeaf,j); 
     temp_pointers[i] = bplus_IndividualPointersBplus(bplusLeaf,j); 
     j = j+1; 
} 

InsertionIndex場合はorder-1、書き込みが起こるアウトバッファの対です。 temp_keytemp_pointersの直後にあるものは、他のヒープオブジェクトを管理するために使用されるヒープの間違いない部分です。

建設自体は疑わしいです。コードの意図を確認して修正します。

+0

ありがとうございました。それは本当に働いた。 – thetna

関連する問題