1、程序的記憶體空間的劃分為那些段,各儲存什麼資料?
劃分的段
儲存的資料
test **段
儲存二進位制指令、常量
data資料段
儲存初始化的全域性變數和被static修飾的區域性變數
bss 靜態資料段
儲存未初始化的全域性變數和被static修飾的區域性變數
stack 棧
儲存區域性變數、塊變數,由作業系統管理,小
heap 堆
由程式設計師手動管理,大
2、全面敘述關鍵字static的作用
改變儲存位置:3、關鍵字const的作用是什麼改變區域性變數的儲存位置,由stack變成data或bss
延長生命週期:
延長區域性變數的生命週期
限制作用範圍:
限制全域性、函式只能在本檔案中使用
可以防止全域性變數、函式命名衝突,或者也可以防止別人呼叫
」保護「變數不被顯式的修改4、區域性變數和全域性變數的區別初始化後的全域性變數、靜態區域性變數被const修飾後,位置會變成text段,變成常量
因此強行修改會產生段錯誤
區域性變數:
是定義在函式內的變數全域性變數:儲存在stack段
只能在本函式內使用
函式呼叫時開始直到函式結束
定義在函式外的變數5、堆記憶體與棧記憶體的區別儲存在data段或bss段
程式的任何位置都能使用
main函式執行前直到程式結束才釋放
定義 大小 使用 安全 優缺點6、堆記憶體越界的後果
超過33頁產生段錯誤7、什麼是記憶體洩漏,如何定位記憶體洩漏破壞malloc的維護資訊 ,再次使用malloc/free時會出錯
產生髒資料
記憶體洩漏:8、什麼是記憶體碎片,如何減少記憶體碎片記憶體無法再使用,也無法釋放或未釋放,再次使用時只能重新申請,然後重複以上過程,日積月累最後導致系統中可用的記憶體越來越少,然後系統越來越慢甚至崩潰
如何避免:
誰申請就誰釋放,應該知道誰釋放誰
如何定位:
1、檢視記憶體使用情況
2、分析**,使用**分析工具檢查malloc的使用情況
3、包裝malloc、free,申請、釋放資訊記錄到日誌中
記憶體碎片:未完待續…已經釋放但無法再繼續使用的記憶體,是由申請釋放的時間不協調導致的,而且無法避免,只能儘量減少
如何減少:
1、盡量使用棧記憶體
2、不要頻繁的申請和釋放記憶體
3、盡量申請大塊的記憶體自己管理
python常見的面試筆試題
a 12,13,3,56,35,33 for i in range len a for j in range len a i 1 if a j a j 1 a j a j 1 a j 1 a j for i in range 1,10 for j in range 1,i 1 print s s s...
mybatis常見面試 筆試題
1 和 的區別是什麼?是properties檔案中的變數佔位符 它可以用於標籤屬性值和sql內部,屬於靜態文字替換 比如 會被靜態替換為com.mysql.jdbc.driver。是sql的引數佔位符 mybatis會將sql中的 替換為?號 在sql執行前會使用preparedstatement的...
面試筆試題
1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...