關於動態記憶體不得不說的故事

2021-09-01 12:29:07 字數 907 閱讀 5084

首先,會用到molloc語句,其實好多小夥伴都已經看出來了,沒錯這就是堆!

下面先來介紹一下棧和堆的概念:

1、棧(stack):有時候也叫「堆疊」,區域性變數所在的記憶體區域,函式可以呼叫,window系統預設大小為1m;

2、堆(heap):動態記憶體開闢區域,大小接近1.5g,使用時需要注意釋放記憶體。

使用時的**如下:

int *p=(int *)malloc(n*sizeof(int));

//建立10n的整型陣列並返回

int fun(int n)

}

colloc:等同於malloc,但只能把每個元素都置0.

語法如下:

calloc(n,sizeof(int));
realloc:用於修改動態記憶體的大小,一般用於擴容。

語法如下:

p=(int *)realloc(p,m*sizeof(int));
free:釋放申請的記憶體,容易引起程式崩潰.

使用方法:

free();
記憶體洩漏:開闢記憶體,沒有釋放。

free崩潰的原因:

1.越界。多寫符號,開闢記憶體少於malloc和realloc,忘記乘以sizeof(*);

2.移動指標的位置,如p(p為指標)++;

3.重複釋放記憶體;

4.釋放不是動態建立的記憶體,如區域性陣列int a[10].

並且,這些原因中出現概論最大的就是越界了,下來是移動指標的位置,再下來是重複釋放記憶體,最後是釋放不屬於動態建立的記憶體。

今天的分享就到這裡了,我們下期再見!

不得不說的故事 STL記憶體管理

1.概述 stl allocator是stl的記憶體管理器,也是最低調的部分之一,你可能使用了3年stl,但卻不知其為何物。stl標準如下介紹allocator the stl includes some low level mechanisms for allocating and dealloc...

ios icon 不得不說的故事

圖示是ios程式包所必需的組成部分。如果你沒有提供程式所需的各種尺寸的圖示,程式上傳發布時可能會無法通過驗證。ios程式為兼顧不同的應用場景,定義了多個不同規格的圖示,並以不同的命名區分 圖示名稱 大小圓角 用途必需 icon.png 57 x 57 10px 用於程式商店和在iphone ipod...

關於基礎,不得不說

最近遇到好多問題,都與基本概念相關。忍不住,就想多說幾句。研究生面試,我出了乙個問題,乙個100khz的方波訊號,幅度大約是幾伏的數量級,想測量其有效值,用什麼儀器,怎麼測?多數學生一臉茫然,搞的我不好意思,慚愧題目是不是太難了。我急了,問學生,乙個1.5v的電池,其電壓有效值是多少?學生問我,直流...