动态变量和静态变量的区别,堆和栈的区别
生活随笔
收集整理的這篇文章主要介紹了
动态变量和静态变量的区别,堆和栈的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
動態變量和靜態變量的區別:
1、存儲位置
動態變量:存儲在內存出棧數據區
靜態變量:存儲在全局數據區(靜態數據區)
2、生命期
動態變量:根據你定義的位置確定,比如你在一個函數中定義的,那么超出該函數范圍變量將失效
靜態變量:程序結束時才釋放 ? 3、作用域
動態變量:同樣的要根據你定義的位置才能確定,和第二點的一樣
靜態變量:當前文件中有效 ? 堆和棧的區分: 分配方式:堆都是動態分配的,沒有靜態分配的堆。 棧有2種分配方式:靜態分配和動態分配。靜態分配是編譯器完成的,比如局部變量的分配。動態分配由alloca() ,alloca的函數返回的時候, 它分配的內存會自動釋放,但是棧的動態分配和堆是不同的,堆需要手動釋放。 堆是通過new,malloc, calloc, realloc等來分配的內存,需要手動析構,棧由系統管理,無需人為處理。
1、存儲位置
動態變量:存儲在內存出棧數據區
靜態變量:存儲在全局數據區(靜態數據區)
2、生命期
動態變量:根據你定義的位置確定,比如你在一個函數中定義的,那么超出該函數范圍變量將失效
靜態變量:程序結束時才釋放 ? 3、作用域
動態變量:同樣的要根據你定義的位置才能確定,和第二點的一樣
靜態變量:當前文件中有效 ? 堆和棧的區分: 分配方式:堆都是動態分配的,沒有靜態分配的堆。 棧有2種分配方式:靜態分配和動態分配。靜態分配是編譯器完成的,比如局部變量的分配。動態分配由alloca() ,alloca的函數返回的時候, 它分配的內存會自動釋放,但是棧的動態分配和堆是不同的,堆需要手動釋放。 堆是通過new,malloc, calloc, realloc等來分配的內存,需要手動析構,棧由系統管理,無需人為處理。
轉載于:https://www.cnblogs.com/javaexam2/archive/2012/02/25/2632872.html
總結
以上是生活随笔為你收集整理的动态变量和静态变量的区别,堆和栈的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js动态改变下拉菜单内容示例 .
- 下一篇: 简单问题:sizeof(char型数组)