程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> g++ 莫名錯誤: malloc():memory corruption(fast)

g++ 莫名錯誤: malloc():memory corruption(fast)

編輯:關於C語言

用g++寫了一個程序, 其中有一段是

for( i = 0 ; i< 5; i++)

   push_back();

這段代碼被調用了N次, 當調用一定次數後, 執行到push_back時報上面的錯誤, 用gdb挨個看, 最終進入 malloc.c裡, 報錯如下

malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Aborted

 

初步懷疑是內存洩漏, 網上說是堆空間不足了.


調試半天, 無果, 最好找以前的程序對比, 發現錯誤原因在


我在定義結構體時,喜歡關閉 內存對齊

#pramga pack ( push, 1 )

...定義結構體

#pargma pack ( pop )    //這句忘寫了


後面的事情就發生了

 摘自 ma100的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved