關於動態記憶體申請的指標該如何釋放?

2022-06-12 04:30:10 字數 910 閱讀 7176

示例**

#include#includechar* tobin(int num)

else

flag<<=1;

} result[32]='\0';

return result;

}int main()

printf("%c",'\n');

free(a); //該記憶體使用完後可以被釋放了,不然會一直占用記憶體

a = null;

return 0;

}

在我理解中,delete是釋放乙個空間,不管多少個指標指向,只要以其中乙個指標為載體,釋放這空間後,其他指向這空間的指標就沒有許可權操作這空間了。

答:1,c/c++沒有授權這個概念,c語言(含c++)之所以稱為程式bai員的語言就是說,作為程式設計師的你,許可權是最大的,你可以做任何事情.訪問權的管理是程式設計師的事情,就如同陣列邊界檢查工作同樣是程式設計師的事

2,new只不過程式向系統申請一塊可用記憶體,而系統會檢索登錄檔(不是windows登錄檔)通過已占用記憶體計算出一塊未被占用的且可以容納申請長度的記憶體給程式,並且標記這塊記憶體已占用,然後返回首位址,這個機制只不過防止記憶體重複分配,避免資料被其他程式覆蓋掉,但是讀寫是開放的.

3,通過指標delete,就是告知系統這個指標指向的位址空間我不要了,而系統做的事情僅僅是刪掉這個註冊記錄,那麼這個位址的空間下次可以再分配了,也就是**了,但是內容不需要清掉,清理掉多此一舉,太浪費cpu時間了,因為下次分配時程式會用資料或者通過初始化覆蓋掉廢棄的資料.

因此當乙個指標釋放後,你的程式的其他指標還是指向原位址,而這塊位址沒被其他程式占用時,裡面的資料還在,因此用其他指標訪問它還是可以的,但是萬一,在你釋放後,多工系統下,其他程序的執行緒馬上申請了這塊記憶體,那你程式讀出的資料可能變化了,但是寫的話就會干擾主權程式的執行.從而可能會導致系統奔潰.

指向指標的指標申請動態記憶體

在 高質量c程式設計指南 中,提到了如果函式的引數是乙個指標,那麼別指望它能申請動態記憶體。如下 include include void getmemory char p,int num int main void getmemory char p,int num 最後的輸出的stu的結果是0,即...

關於動態記憶體申請的部落格

動態記憶體 malloc 動態申請記憶體 int arr int malloc n sizeof int int arr n 定義乙個n長度的陣列 如果要使用,需引用標頭檔案 需注意 1.棧的大小1m,可配 2.堆的分配的最大連續塊1.2g calloc動態申請記憶體,並將裡面的值置為0 int a...

一級指標的動態記憶體申請

動態記憶體申請的三大函式 1.void malloc size t,size 特點 申請的記憶體不會被初始化 2.void calloc size t count,size t size 特點 會給申請的記憶體初始化 數字類 初始值為0 字元類 初始值為 0 3.void realloc void ...