首頁>Club>
4
回覆列表
  • 1 # 使用者7364316064609

    堆與棧的區別:

    記憶體的分配方式和回收方式不同:

    棧是後進先出,可以用一個簡單程式例子可以體現出棧的後進先出:

    void test1(){

    int num2;

    test3

    }

    void test2(){

    int num3;

    }

    int main(){

    int num1;

    test1();

    }

    程式執行過程說明 : 先給num1分配記憶體,然後呼叫test1後在給num2分配記憶體

    接著呼叫test2後給num3分配 分配順序是num1,num2,num3

    先是呼叫完test2後回收num3的記憶體,接著呼叫完test1回收num2,最後呼叫完main函式

    回收num1, 回收的順序是 num3,num2,num1

    體現後分配的先回收(後進先出)

    堆區記憶體是手動(new)分配,手動(delete)回收的

    2.棧區記憶體的分配大小受到限制,比如:棧分配的記憶體最大為1M(也有說2M,4M說法),

    但堆區記憶體空間很大,幾十M甚至上G的記憶體都可以分配

    以上只是堆與棧的部分區別

  • 中秋節和大豐收的關聯?
  • 燒錄機的使用壽命一般是幾年啊?