關於delete失敗的問題

2021-07-10 10:42:56 字數 370 閱讀 2271

今天在oj上提交作業的時候顯示出錯,然而在dev上面執行是沒有問題的,後來把**移到vc6.0上才出現了問題,結果把delete語句刪掉就通過了。

裡面說明了「

在動態分配的時候,會在陣列界限外加乙個用來標識陣列範圍的標誌,例如a陣列,就會在a[-1]和a[5]有兩個標誌,如果我們在這兩個位置

賦值,賦值和呼叫時並不會出錯,而是在delete a時出錯,錯誤的名稱就是「damage: before normal block」和「damage: after normal

block」。一般是後者居多。」

而我的**恰恰是在動態分配空間的標誌處進行了賦值,即越界賦值,導致標誌消失,delete失敗。

在修改了演算法之後,一切就正常了。

關於delete 和delete的區別

自己也有和lz同樣的疑惑,於c 屆還是小白一枚啊。問題 看高質量c 程式設計的時候有個地方沒看懂,就是在string的析構函式中釋放m data時用delete m data,但後面跟著有個注釋 由於m data 是內部資料型別,也可以寫成 delete m data delete m data不是...

關於delete和delete 的區別

在c 動態記憶體分配中我們常用到new和delete兩種操作,new用來申請記憶體,delete用來釋放記憶體。那麼問題來了,我們應該用delete來釋放記憶體還是用delete來釋放記憶體呢?為了得到答案我做了一下實驗。注 一下實驗在使用delete和delete得到的結果是一樣的,不重複po圖 ...

關於delete 和 delete 二

3.下面我們來看看上面提到的4位元組是幹什麼用的。int main 執行結果 adress after malloc 0x804a008 size 104 a a adress after new 0x804a00c number of a at 0x804a008 100 size of a at...