指標與delete釋放記憶體

2021-09-13 01:52:37 字數 963 閱讀 7661

下表列出了 c++ 支援的其他一些重要的運算子。

運算子描述

sizeof

sizeof 運算子返回變數的大小。例如,sizeof(a) 將返回 4,其中 a 是整數。

condition ? x : y

條件運算子。如果 condition 為真 ? 則值為 x : 否則值為 y。

,逗號運算子會順序執行一系列運算。整個逗號表示式的值是以逗號分隔的列表中的最後乙個表示式的值。

.(點)和 ->(箭頭)

成員運算子用於引用類、結構和共用體的成員。

cast

強制轉換運算子把一種資料型別轉換為另一種資料型別。例如,int(2.2000) 將返回 2。

&指標運算子 & 返回變數的位址。例如 &a; 將給出變數的實際位址。

*指標運算子 * 指向乙個變數。例如,*var; 將指向變數 var。

delete 釋放new分配的單個物件指標指向的記憶體

delete 釋放new分配的物件陣列指標指向的記憶體

a *a = new a[10];

delete a;         //僅釋放了a指標指向的全部記憶體空間 但是只呼叫了a[0]物件的析構函式 剩下的從a[1]到a[9]這9個使用者自行分配的m_cbuffer對應記憶體空間將不能釋放 從而造成記憶體洩漏

delete  a;      //呼叫使用類物件的析構函式釋放使用者自己分配記憶體空間並且   釋放了a指標指向的全部記憶體空間

delete   ptr   代表用來釋放記憶體,且只用來釋放ptr指向的記憶體。

delete   rg   用來釋放rg指向的記憶體,!!還逐一呼叫陣列中每個物件的destructor!!

對於像int/char/long/int*/struct等等簡單資料型別,由於物件沒有destructor,所以用delete 和delete 是一樣的!但是如果是c++物件陣列就不同了!

delete 與 delete 釋放記憶體

以下內容來引自 我們通常從教科書上看到這樣的說明 delete 釋放new分配的單個物件指標指向的記憶體 delete 釋放new分配的物件陣列指標指向的記憶體 那麼,按照教科書的理解,我們看下下面的 int a new int 10 delete a 方式1 delete a 方式2 肯定會有很多...

C 使用delete釋放記憶體

當需要記憶體時,可以使用new來請求,這只是c 記憶體管理資料報中有魅力的乙個方面。另乙個方面是delete運算子,它使得在使用完記憶體後,能夠將其歸還給記憶體池。這是通向最有效的使用記憶體的關鍵一步。歸還或釋放 free 的記憶體可供程式的其他部分使用。使用delete時,後面要加上指向記憶體塊的...

delete釋放new 開闢的記憶體

直接看下面這道題 使用 char p new char 10 申請一段記憶體,然後使用delete p釋放,有什麼問題?a 會有記憶體洩露 b 不會有記憶體洩露,但不建議用 c 編譯就會報錯,必須使用delete p d 編譯沒問題,執行會直接崩潰 這道題題目開闢的是10個char型別的空間,因為是...