C語言內存相關的一些知識點

  整理了一些離散的概念點

  1. 1.棧和代碼段、數據段不一樣,棧是越靠近棧頂,其內存地址越小,而代碼段和數據段則是,越往後,其內存地址越大
    數據段放啥呢:全局變量,常量,函數裏的靜態變量。
    內存的規劃,從高地址到低地址是:棧段,自由段,堆段,數據段,代碼段。棧自堆數代
  2. 棧的特點:先進後出,
    內存地址由大到小。
    地址分配:代碼,數據段是從下往上分配(先低地址,後高地址),棧是從上往下分配(先高地址,後低地址)
    

    函數中靜態變量,局部變量區別:
    局部變量在棧(相對數據段而言的高地址)中,而靜態變量在數據段(低地址)中.
    所以在多次調用函數時,靜態變量不會被重新,初始化. 或者這麼說,靜態變量的生存週期和數據段相同,局部變量

  3. 32位操作系統(32個地址總線,2的32次冪 2的30次方1024的3次方,就是1G)做多使用4G內存
    64位操作系統(2的30次方 =G,2的40次方=T)0xffffffffffffffff - 0x0
    


  4. 指針 32位時 佔用4個字節
    指針 64位時 佔用8個字節

  5. &a:返回變量a的內存地址

    *a:用來保存變量a的內存地址

    &和*運算符恰好相反。&運算符接收一個數據,然後告訴你這個數據保存在哪裏;*運算符接收一個地址,然後告訴你這個地址中保存的是什麼數據。

&:表示獲取變量的地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章