C程序存储空间分配

news/2024/7/20 14:56:00 标签: 内存管理

可执行程序包括BSS段、数据段、代码段。
1.数据段存放已初始化的全局变量和静态变量,数据段属于静态内存分配。
2.BSS段(Block Started by Symbol)存放未初始化的全局变量和静态变量。
3.代码段:用来存放程序的代码内存空间。

可执行程序在运行时会多出两个区域:栈区和堆区。
4.栈区:由操作系统自动分配和释放 ,存放函数的参数值,局部变量的值等。每当一个函数被调用时,该函数的返回类型和一些调用的信息也会被存放到栈中。然后这个被调用的函数再为它的自动变量和临时变量在栈上分配空间。每调用一个函数一个新的栈就会被使用。栈区是从高地址位向低地址位增长的,是一块连续的内存区域,最大容量是由系统预先定义好的,申请的栈空间超过这个界限时会提示溢出,用户能从栈中获取的空间较小。
5.堆区:用于动态分配内存,位于BSS和栈中间的地址区域。由程序员亲自用malloc()申请分配和用free()释放。堆是从低地址位向高地址位增长,采用链式存储结构。频繁的 malloc/free造成内存空间的不连续,产生碎片。当申请堆空间时库函数是按照一定的算法搜索可用的足够大的空间。因此堆的效率比栈要低的多。
在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/1626934.html

相关文章

docker 注册表 服务器,使用Podman设置Docker容器注册表并加密SSL

本文将向您展示如何使用Podman创建本地Docker容器映像注册表。容器映像专用注册表使您可以安全地在本地工作,因为您可以管理所有内容,使用容器注册表,您可以在任何计算机上构建容器映像,然后使用Docker或Podman CLI将其推送到本地…

使用C++编写linux多线程程序

前言 在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t …

父进程等待子进程退出

父进程等待子进程退出 1.wait()函数: status参数: 是一个整型数指针 非空: 子进程退出状态放在它所指向的地址中。 空: 不关心退出状态 补充:wait和waitpid的区别: waip使调用者阻塞,waitpid有…

【LeetCode 剑指offer刷题】树题8:26 树的子结构(572. Subtree of Another Tree)

【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...) 572. Subtree of Another Tree Given two non-empty binary treessandt, check whether treethas exactly the same structure and node values with a subtree ofs. A subtree ofs is a tree…

电脑xp传照片显示服务器错误,xp系统显示“服务器错误500”的两种解决方法

xp纯净版系统在浏览网页的时候会遇到这样或者那样的错误,比如经常遇到404错误,503错误,怎么回事呢?这些都是HTTP的状态码,不同的状态码代表不同的错误类型,有些不常用的状态码便没有详细的记载,…

postgresql学习笔记

postgresql学习笔记 概念 PostgreSQL是一个关系数据库管理系统,用于管理存储在关系中的数据的系统。开发面向对象的数据库。 每个表都是命名的行集合。给定表的每一行都有相同的命名列表,每列都是特定的数据类型。尽管列在每行中都有固定的顺序&#xff…

[React] react.js的一些库和用法

React性能优化 记录一次利用 Timeline/Performance工具进行 React性能优化的真实案例http://www.jianshu.com/p/9b0e9ef0a607 React性能优化总结https://segmentfault.com/a/1190000007811296 react各种模块推荐 阮一峰在github ant-design react-redux-universal-hot-example一…

html 引号可以是单引号

html 引号可以是单引号 转载于:https://www.cnblogs.com/classmethond/p/10232436.html