[問題] 請問關於十二戒中的 new 和 delete
請問如果在function內new一個array最後回傳指標給caller接,例如:
int* foo(int num){
int* ptr = new int [num];
/// ..... some operation ..../////
return ptr;
}
int main(){
int* ptr = foo(10);
///// ...some operation.... ///
delete [] ptr; ←請教這行
return 0;
}
我的問題是,在caller接住foo()傳回的pointer後,最後它要釋放記憶體,
那是要執行delete 還是delete []呢? 我覺得應該是delete [];
可是在main()中它只知道有一個local pointer int*接住function傳回來的pointer,
它怎麼知道當執行 delete[]時,要釋放多少格當初向OS要來的空間呢?
那如果是執行 delete,那感覺剩下沒delete到的會產生memory leak....
先謝謝大家了!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.139.7
推
07/24 11:19, , 1F
07/24 11:19, 1F
推
07/24 11:54, , 2F
07/24 11:54, 2F
→
07/24 11:57, , 3F
07/24 11:57, 3F
→
07/24 11:58, , 4F
07/24 11:58, 4F
推
07/24 12:02, , 5F
07/24 12:02, 5F
→
07/24 12:45, , 6F
07/24 12:45, 6F
推
07/24 13:25, , 7F
07/24 13:25, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章