代碼如是: 怎么才能把 a和 b 占用的記憶體同時 ,釋放掉,這樣寫程式不正確
while(1){
long double *a = new long double[2];
cout <<"陣列 a地址:"<< a << endl;
cout <<"陣列a[0]地址:" << &a[0] << endl;
cout <<"陣列a[1]地址:" << &a[1] << endl;
a[0] = 1.0;
a[1] = 2.0;
long double *b = new long double[2];
cout << "陣列 b地址:"<< b << endl;
cout << "陣列b[0]地址:" << &b[0] << endl;
cout << "陣列b[1]地址:" << &b[1] << endl;
b[0] = 3.0;
b[1] = 4.0;
cout << "---------" <<endl;
b =a;
cout << "陣列 b地址:" << b << endl;
cout << "陣列b[0]地址:" << &b[0] << endl;
cout << "陣列b[1]地址:" << &b[1] << endl;
cout << b[0] << endl;
cout << b[1] << endl;
cout << b[1] << endl;
delete[]a;
delete[]b;
}
uj5u.com熱心網友回復:
你有一個b=a所以以前的b就泄露了uj5u.com熱心網友回復:
delete[] b;b = a;
delete a;
uj5u.com熱心網友回復:
那個b=a是我故意加的,解決方法已經知道了,應該是定義一個 long double型別的指標 但是不要賦值,空指標不分配記憶體,再b=a代碼前先把空指標指向b,然后代碼就正確了,既不會在代碼運行到delete[]b的時候報錯,也不會記憶體泄漏轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196233.html
標籤:C++ 語言
上一篇:2020.10.30
