亚洲一级免费看,特黄特色大片免费观看播放器,777毛片,久久久久国产一区二区三区四区,欧美三级一区二区,国产精品一区二区久久久久,人人澡人人草

C語言

C語言中malloc()和free()函數(shù)的理解

時(shí)間:2025-03-13 23:05:05 C語言 我要投稿
  • 相關(guān)推薦

C語言中malloc()和free()函數(shù)的理解

  C語言是一門通用計(jì)算機(jī)編程語言,應(yīng)用廣泛。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。以下僅供參考!

  C++ 中malloc()和free()函數(shù)的理解

  關(guān)于malloc和free這兩個(gè)函數(shù),malloc的用法示例:int *p=(int *)malloc(2*sizeof(int)); 它表示在堆中開辟一塊大小為2*sizeof(int)的一塊內(nèi)存空間,p指向這塊內(nèi)存空間的起始地址,malloc前面的(int*)表示這塊空間用來存儲(chǔ)int型數(shù)組。開辟了這塊空間后,可以修改這個(gè)空間中的值,例如為*p,*(p+1)做賦值操作,如果再次使用malloc函數(shù),例如再寫一個(gè) int *q=(int *)malloc(2*sizeof(int)); 此時(shí)開辟的以q為起始地址長度為2*sizeof(int)的空間是不會(huì)覆蓋p所指向的空間的。但是,如果在int *q=(int *)malloc(2*sizeof(int));之前寫一個(gè)free(p),那么,q所指向的空間則有可能覆蓋p指向的空間。所謂的free(p)操作,其實(shí)是修改p所指向的空間的標(biāo)記值,讓其可以被覆蓋。盡管執(zhí)行了free(p),p仍就指向以前的起始地址,依舊可以對(duì)*p,*(p+1)賦值,并且可訪問他們(例如輸出)。

  代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(){                
  int *p=(int *)malloc(2*sizeof(int));                
  free(p);                
  *p=1;                
  *(p+1)=2;                
  cout<<p<<endl<<(p+1);                
  cout<<endl;                
  cout<<*p<<endl<<*(p+1);                
  
  int *q=(int *)malloc(2*sizeof(int));                
  cout<<endl<<q<<endl<<(q+1);                
  cout<<endl<<*q<<endl<<*(q+1);                
  return 1;                
}                

  運(yùn)行結(jié)果:

  補(bǔ)充:

  int *p=(int *)malloc(2*sizeof(int)); 若要釋放這段空間,必須free(p),只是單單想釋放部分空間,例如free(p+1)是不允許的。

【C語言中malloc()和free()函數(shù)的理解】相關(guān)文章:

如何運(yùn)用C語言malloc和free函數(shù)08-25

淺談如何運(yùn)用C語言malloc和free函數(shù)08-09

c語言中free的用法11-05

c語言中free的用法指導(dǎo)09-17

C語言中isalnum()函數(shù)和isalpha()函數(shù)的對(duì)比10-12

C語言中函數(shù)的區(qū)分08-30

C語言中g(shù)ets()函數(shù)知識(shí)08-10

C語言中關(guān)于時(shí)間的函數(shù)10-24

C語言中strpbr()函數(shù)的用法07-25