p重新呼叫多次new及delete的記憶體洩露問題

2021-05-04 10:19:35 字數 987 閱讀 1726

#include

using namespace std;

//使用ptemp是為了看p初始開闢的空間是否被刪除。

//但是事實上沒有,所有如果這樣開闢的空間大,p重新呼叫多次new就會出現記憶體洩露的問題!

//delete時不要兩次呼叫!並且最好在delele時候if判斷下,並且delete後設定為null

//並且這樣也方便在程式設計的時候及時找到錯誤,因為p=null後再呼叫p就會出錯,但是如果只delete p,就不會出錯,

//但是使用乙個已經delete的指標非常危險!

int main(int argc, char* argv)

int* p=new int[5];//p 開闢5個空間

int* ptemp=p;//儲存開始開闢的記憶體位址

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

p[i]=10;//在原始空間賦值

p=new int[5];//再用p另外開闢5個空間

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

p[i]=20;//重新賦值

delete p;

// if (p!=null)

// delete p;

// p=null;

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

coutcoutcout//  delete p;//指標2次刪除

//  delete p;//指標2次刪除    //程式記憶體錯誤,直接崩潰

// if (p!=null)

// delete p;

// if (p!=null)

// delete p;             //同樣的結果,程式記憶體錯誤,直接崩潰

if (p!=null)                //比較好的寫法

delete p;

p=null;

if (p!=null)

delete p;

p=null;

return 0;

spring quartz 多次呼叫

早上測試程式的時候,發現專案下的定時任務quartz同一時刻有乙個任務執行了兩次,但是我清楚地記得原來是沒有問題,很是懊惱。第一步 檢查配置檔案,檔案內有配置concurrent為false,理論上來講應該可以防止job同時執行兩次的問題。work false 0 0 2 第二步 既然不是quart...

遞迴函式多次呼叫

def classify inputtree,featlabels,testvec 在實際資料集中改屬性儲存在哪個位置?是第乙個屬性還是第二個屬性?param inputtree param featlabels param testvec return firststr list inputtre...

ADDED TO STAGE 多次被呼叫

var mca movieclip new mca mca.addeventlistener event.added to stage,addstageevent function addstageevent e event void function addstageevent2 e event ...