C 陣列記憶體會有洩漏問題,還是不安全呢

2021-04-25 17:24:49 字數 755 閱讀 4429

vector color_list;

void f()

;color_list.push_back(color);

}這樣定義會記憶體洩漏嗎?

我定義了個double color[4] = ;

然後儲存了陣列的指標

然後這塊記憶體會自動釋放嗎?

小明:你那個指標是野指標啊

如果你定義陣列的那個函式結束,雖然空間裡面的內容可能沒有改變,但是你這樣用這個指標是不安全的

感覺這樣是不對的,雖然不一定出問題。。。你那個陣列做全域性變數就應該不會出什麼問題吧

我:但是如果double * c = new double[4];這樣就安全了?

小明  20:01:43

你定義陣列和使用指標實在同乙個函式體裡面使用嗎???

我  20:01:58

不是,都不在乙個類中了

小明  20:02:03

你這樣不釋放他,不好吧

我  20:02:16

我程式最後結束的時候才會釋放

我  20:02:27

或者我不想要了,再自己釋放唄

小明  20:02:31

那你你就成員變數啊,讓他一直在,到最後的析構函式裡面釋放啊

我  20:02:59

也就是c++裡面自己定義的陣列

double c[4];

的記憶體只要函式結束了再引用就不安全了?

小明  20:04:06

這顯然是這樣啊,在函式裡面定義的,函式結束再用是不對的

c 記憶體洩漏問題

記憶體洩漏 所以當程式退出時,系統會收回分配的記憶體,由於記憶體已被錯誤地釋放掉,於是就會出現 debug assertion failed 的錯誤。這個assert說明,有一塊內存在被釋放的時候,它的頭部裡面的資訊已經被改掉了,和預期的不一樣。記憶體分配的程式往往在被分配出的記憶體塊頭部放上一些校...

C 物件陣列釋放造成記憶體洩漏

物件陣列在釋放的時候,經常會遇到兩種情況,可能會造成記憶體洩漏 例如,geopoint是乙個類 class geopoint geopoint double x,double y geopoint public void setx double x void sety double y double...

C 記憶體洩漏的常規問題和解決辦法

問題 c 記憶體洩漏 原因 記憶體錯誤和並非問題。1,記憶體洩漏 堆疊記憶體沒有釋放,少量一般無事 大量記憶體洩漏 導致記憶體耗盡,後續分配記憶體失敗,程式奔潰。少量記憶體洩漏 程式執行時間長久,也容易奔潰。2,記憶體越界訪問 1 讀越界,讀取不是自己的資料。讀取位址無效,程式直接奔潰。讀取位址有效...