對內存的釋放是不是清零?在vc、vs的情況下都是c這種的嗎?那為什麼多次釋放同一塊內存會報錯呢,而且是程序崩潰,想不通,不就是清個零嘛
不是清零,而是將這塊內存標記為未使用,之所以不清零,是出於性能的考慮。計算機上到處有類似的設計,比如說,你刪除一個文件,並不是真的將刪除的文件填充0,而也是把對應的簇標記為未分配。格式化硬盤也是如此。這也是為什麼刪除了文件只要沒有寫入新的文件你還能將它找回來的原因。
重復釋放內存報錯的原因是因為這些內存已經標記為未分配,就不再有記錄了,所以再次釋放標准庫就會丟出異常。