【從零開始學習計算機科學】編譯原理(七)運行時刻環境

【從零開始學習計算機科學】編譯原理(七)運行時刻環境

  • 運行時刻環境
    • 存儲組織
    • 空間的棧式分配
      • 活動樹
      • 活動記錄和控制棧
      • 簡單棧式存貯分配
      • C語言的過程調用和過程返回時的存貯管理
    • 堆式存儲分配
      • 堆式存儲分配的功能
      • 垃圾回收
        • 基于跟蹤的垃圾回收
        • 短停頓垃圾回收

運行時刻環境

存儲組織

目標程序在它自己的邏輯地址空間內運行,程序中的代碼和數據都在這個空間中有一個具體的地址。目標程序在邏輯地址空間的運行時刻映像包括:

  • 代碼區,存儲目標代碼。目標代碼的大小在編譯時刻就已經確定,編譯器將可執行的目標代碼放在一個靜態確定的區域。
  • 數據區,具體分為靜態數據區、棧區和堆區。
    • 靜態數據區:程序的某些數據對象的大小可在編譯時刻知道,它們可被放置在靜態數據區。
    • 棧區和堆區:動態數據區,其大小會隨著程序運行而改變。

在這里插入圖片描述

棧區存放為運行函數而分配的局部變量、函數參數、返回數據等,函數運行時分配,函數結束時釋放。分配方式類似于數據結構中的棧。棧區是一塊連續的內存區域;棧區內存通常大小有限,一般不超過8MB;向棧區申請的內存過大時會導致棧溢出。

堆區存放具有更靈活的生命周期的數據,支持手動分配和回收數據對象。分配方式類似于數據結構中的鏈表。其使用不連續的內存區域;32位計算機堆的大小最大可為4GB;若不釋放分配的內存會造成內存泄露。

空間的棧式分配

活動樹

我們可以用一棵樹來描繪控制進入和離開活動的途徑,這樣的樹稱作活動樹。在一棵活動樹中:每一個結點代表一個過程的活動;根結點代表主程序的活動(如main函數);代表

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72155.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025-03-08 學習記錄--C/C++-PTA 習題10-1 判斷滿足條件的三位數

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 裁判測試程序樣例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…

【ArcGIS】地理坐標系

文章目錄 一、坐標系理論體系深度解析1.1 地球形態的數學表達演進史1.1.1 地球曲率的認知變化1.1.2 參考橢球體參數對比表 1.2 地理坐標系的三維密碼1.2.1 經緯度的本質1.2.2 大地基準面&#xff08;Datum&#xff09;的奧秘 1.3 投影坐標系&#xff1a;平面世界的誕生1.3.1 投…

DeepSeek刷力扣輔助題單 存留記錄

最近感覺被什么東西阻擋了腳步,經大佬建議,做算法題提升一下思維 首先,我不認為算法題要死磕,因為我沒有那個天賦,但是我還是要嘴硬一下 其次,我沒有計算機基礎的學習背景,因為我是修飛機專升本來的自動化專業,24年七月幾乎零基礎學習Unity 和 C#,努力學習到現在感覺已經盡力了…

化工廠防爆氣象站:為石油化工、天然氣等領域提供安全保障

【TH-FB02】在石油化工、天然氣等高危行業中&#xff0c;安全生產是至關重要的。這些行業常常面臨著易燃易爆、有毒有害等潛在風險&#xff0c;因此&#xff0c;對氣象條件的監測和預警顯得尤為重要。化工廠防爆氣象站作為一種專門設計用于這些特殊環境的氣象監測設備&#xff…

《MySQL數據庫從零搭建到高效管理|庫的基本操作》

目錄 一、數據庫的操作 1.1 展示數據庫 1.2 創建數據庫 1.3 使用數據庫 1.4 查看當前數據庫 1.5 刪除數據庫 1.6 小結 二、常用數據類型 2.1 數值類型 2.2 字符串類型 2.3 日期類型 一、數據庫的操作 打開MySQL命令行客戶端&#xff0c;安裝完MySQL后會有兩個客戶端…

計算機考研C語言

C語言程序設計從入門到精通【2025完整版】考研復試 嵌入式 計算機二級 軟考 專升本也適用_嗶哩嗶哩_bilibili 1、第一個C程序 helloC #include <stdio.h>int main(){printf("hehe");return 0;}每個C語言程序不管有多少行代碼&#xff0c;都是從main函數開始執…

力扣hot100二刷——鏈表

第二次刷題不在idea寫代碼&#xff0c;而是直接在leetcode網站上寫&#xff0c;“逼”自己掌握常用的函數。 標志掌握程度解釋辦法?Fully 完全掌握看到題目就有思路&#xff0c;編程也很流利??Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答???Sl…

Word 小黑第2套

對應大貓42 Word1 從文件中導入新樣式 樣式組 -管理樣式 -導入導出 -關閉Normal文件 -打開文件 -修改文件 -選中所需 -復制 調整字符寬度 調整字符間距 -字體組 加寬 適當修改磅值 文字效果通過文字組修改 另起一頁&#xff0c;分隔符&#xff08;布局 -分隔符 -分節符 -下一…

iTextSharp-PDF批量導出

HTML轉PDF批量導出速度太慢且使用Spire.pdf.dll限制頁簽10后需要開通會員才能使用-做出優化 環境&#xff1a;U9 - UI插件 需求&#xff1a;選擇需要導出的客戶查詢對應對賬數據批量導出PDF并彈出下載框保存到默認位置 using System; using System.Collections.Generic; us…

【RabbitMQ】Spring Boot 結合 RabbitMQ 完成應用間的通信

&#x1f525;個人主頁&#xff1a; 中草藥 &#x1f525;專欄&#xff1a;【中間件】企業級中間件剖析 Spring 框架與 RabbitMQ 的整合主要通過 Spring AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;模塊實現&#xff0c;提供了便捷的消息隊列開發能力。 引…

CDefView::_GetPIDL函數分析之ListView_GetItem函數的參數item的item.mask 為LVIF_PARAM

CDefView::_GetPIDL函數分析之ListView_GetItem函數的參數item的item.mask 為LVIF_PARAM 第一部分&#xff1a; 1: kd> t SHELL32!CDefView::_GetPIDL: 001b:77308013 55 push ebp 1: kd> dv this 0x00000015 i 0n21 …

MongoDB分頁實現方式對比:PageRequest vs Skip/Limit

MongoDB分頁實現方式對比&#xff1a;PageRequest vs Skip/Limit 一、基本概念1.1 PageRequest分頁1.2 Skip/Limit分頁 二、主要區別2.1 使用方式2.2 參數計算2.3 適用場景PageRequest適用場景&#xff1a;Skip/Limit適用場景&#xff1a; 三、性能考慮3.1 PageRequest的性能特…

Manus(一種AI代理或自動化工具)與DeepSeek(一種強大的語言模型或AI能力)結合使用任務自動化和智能決策

一、Manus與DeepSeek差異 十分好奇DeepSeek和Manus究竟誰更厲害些&#xff0c;DeepSeek是知識型大腦&#xff0c;Manus則是全能型執行者。即DeepSeek專注于語言處理、知識整合與專業文本生成。其核心優勢在于海量參數支持的深度學習和知識推理能力&#xff0c;例如撰寫論文、潤…

UI自動化:poium測試庫

以下是關于 poium 測試庫 的詳細介紹&#xff0c;涵蓋其核心功能、使用方法及與原生 Selenium 的對比&#xff0c;幫助快速掌握這一工具&#xff1a; 1. poium 簡介 定位&#xff1a;基于 Selenium 的 Page Object 模式增強庫&#xff0c;專注于簡化元素定位和頁面操作。 核心…

C#結構體(Struct)詳解

在 C# 中&#xff0c;?結構體&#xff08;struct&#xff09;? 是一種值類型數據類型&#xff0c;適用于封裝小型數據組。與類&#xff08;class&#xff09;不同&#xff0c;結構體在棧&#xff08;Stack&#xff09;上分配內存&#xff0c;且賦值時會發生值復制。以下是結構…

UVC攝像頭命令推流,推到rv1126里面去

ffmpeg命令查詢UVC設備 .\ffmpeg.exe -list_devices true -f dshow -i dummy 上圖是查詢UVC設備的效果圖&#xff0c;畫紅框的部分是UVC設備的設備名稱"USB2.0 PC CAMERA"和設備號 "device_pnp_\\?\usb#vid_1908&pid_2310&mi_00#8&39abfe5&0&a…

Linux中的基本指令(上)

目錄 ls指令 判斷linux中文件 pwd指令 認識路徑 ?編輯 絕對路徑/相對路徑 cd指令 簡要理解用戶 理解家目錄 echo指令和printf指令 touch指令 mkdir指令 cat指令 tree指令 rmdir指令和rm指令 man指令 cp指令 which指令 alias 指令 date指令 cal指令 理解…

多數元素——面試經典150題(力扣)

題目 給定一個大小為 n 的數組 nums &#xff0c;返回其中的多數元素。多數元素是指在數組中出現次數 大于 ? n/2 ? 的元素。 你可以假設數組是非空的&#xff0c;并且給定的數組總是存在多數元素。 示例 1&#xff1a; 輸入&#xff1a;nums [3,2,3] 輸出&#xff1a;3 …

Qt 數據庫操作(Sqlite)

數據庫簡介 關于數據庫的基礎知識這里就不做介紹了&#xff0c;相關博客可以查看&#xff1a; SQL基礎知識 數據庫學霸筆記 上面博客都寫的比較詳細&#xff0c;本文主要介紹如何使用Qt進行數據庫相關操作&#xff0c;數據庫分為關系型數據庫和非關系型數據&#xff0c;關系…

網絡安全 api 網絡安全 ast技術

隨著應用或者API被攻擊利用已經越來越多&#xff0c;雖然來自開源組件的漏洞加劇了這一現象的發生&#xff0c;但是&#xff0c;其實主要還是在于應用程序或者API本身沒有做好防范&#xff0c;根源在于源代碼本身的質量沒有嚴格把控。AST是指Application Security Testing&…