堆空間的開闢與使用

2022-08-02 11:36:10 字數 1080 閱讀 7242

#define crt_secure_no_warnings

#include

#include

#include

#include

#include

int main0101()

//開闢堆空間

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

printf("%p\n",p);

printf("%p\n",*p);//這裡沒有賦值,是亂碼

//使用堆空間

*p=123;

printf("%d\n",*p);

//釋放堆空間;並不是直接就把堆記憶體進行釋放掉,而是做乙個標識;然後等系統需要這塊記憶體的時候,發現是空閒的,就會進行釋放

free(p);

//可以給指標變數設定為空指標

//p=null;

//釋放後列印位址;這裡的p為野指標

printf("%p\n",p);

//釋放後修改值;這裡操作野指標不會報錯

*p=456;

printf("%d\n",*p);

return exit_success;

//結果

//開闢10個int 型別大小的堆空間

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

//通過指標操作堆空間

for(int i=0;i<10;i++)

p[i]=i;

for(int i=0;i<10;i++)

printf("%d ",*(p+i));

//釋放堆空間

free(p);

if(!p)//p==null;

printf("程式異常\n")

return -1;

return 0;

//結果

棧空間與堆空間

出處 以下為正文 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等,其操作方式類似於資料結構的棧。2 堆區 heap 一般是由程式設計師分配釋放,若程式設計師不釋放的話,程式結束時可能由os 值得注意的是他與資料結構...

堆空間與棧空間的區別

1.棧區 stack 又編譯器自動分配釋放,存放函式的引數值,區域性變數的值等,其操作方式類似於資料結構的 棧。2.堆區 heap 一般是由程式設計師分配釋放,若程式設計師不釋放的話,程式結束時可能由os 值得注意的是他與 資料結構的堆是兩回事,分配方式倒是類似於資料結構的鍊錶。3.堆和棧的區別 1...

vector記憶體的開闢與

1.vector的記憶體增長vector其中乙個特點 記憶體空間只會增長,不會減小,援引c primer 為了支援快速的隨機訪問,vector容器的元素以連續方式存放,每乙個元素都緊挨著前乙個元素儲存。設想一下,當vector新增乙個元素時,為了滿足連續存放這個特性,都需要重新分配空間 拷貝元素 撤...