expression:_CrtlsValidHeapPointer


詳見stackoverflow

"_CrtIsValidHeapPointerUserData means, that you have a heap corruption, which is noticed by debug heap checker. Suspect everybody who can write any information into any deleted dynamic object".

_CrtIsValidHeapPointerUserData 意味着堆崩潰。

假設有語句char* p = new char[256];

              delete[]p;

delete時發生上述中斷,最好仔細檢查在程序的中途是否改變了p指針的指向。

 

我的語句是這樣寫的:

Protein_Index_Table *pro_idx_table = new Protein_Index_Table[max_idxTable_size];        //index datda

delete[]pro_idx_table;

發生異常的時候,我以為是由於結構體的原因,可能不能對結構體變量使用new和delete,查閱msdn delete沒有發現說delete不能用於結構體,

仔細檢查,發現自己誤寫了一句:

            pro_idx_table[pro_idx_table_len].AC_Pos = ftell(ac_fp);
            pro_idx_table[pro_idx_table_len].DE_Pos = ftell(de_fp);
            pro_idx_table[pro_idx_table_len].SQ_Pos = ftell(sq_fp);

            fwrite(pro_idx_table + pro_idx_table_len, sizeof(Protein_Index_Table), 1, index_fp);
            pro_idx_table++;

pro_idx_table++應該是pro_idx_table_len++.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM