c语言内存管理

通常程序访问的是虚拟内存,虚拟内存映射到物理内存的一小部分。
在Linux系统中,虚拟内存默认为4G的大小。每个进程都有独立的4G内存地址空间。

int main()
{char s[] = "hello world";	//s数组位于栈区,复制了一份字符串到数组里char *s = "hello world";	//s指针位于栈区,字符串位于常量区char *s = malloc(128); 	//分配的128字节区域位于堆区
}

在这里插入图片描述
栈与堆的区别:
1、管理方式不同:堆的申请malloc()与释放free()由程序员来完成,栈由系统编译器自动分配
2、空间大小不同:堆空间大于栈空间
3、栈在内存中连续分配,不会产生碎片。堆的频繁申请可能造成内存空间的不连续性,产生大量碎片
4、增长方式不同:栈向内存地址减小的方向增长,堆则相反
5、分配效率不同:计算机在底层提供寄存器存放栈的地址,压栈出栈有专门的指令;堆由c函数库提供,需要有一定的算法去寻找申请足够大的地址空间。

内存错误情况:
1、指针没有指向一块合法的内存,
2、指针没有初始化地址。

int * p;  //1、野指针
char *p = NULL; //2、空指针
*p = 100//以上两种情况,都会引起段错误

3、指针分配的内存太小
4、内存越界
5、内存泄漏
6、内存释放后,继续使用该指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/218113.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Python中matplotlib函数的plt.plot()函数的颜色参数设置,以及可以直接运行的程序代码!

文章目录 前言一、使用字符串颜色:二、使用十六进制颜色:三、使用RGB元组:四、使用颜色映射:总结 前言 在matplotlib中,plt.plot()函数可以接受颜色参数,可以设置为字符串颜色(如red&#xff0…

用Python进行数据分析:探索性数据分析的实践与技巧(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【ArcGIS Pro微课1000例】0038:基于ArcGIS Pro的人口密度分析与制图

文章目录 一、人口密度二、人口密度分析1. 点密度分析2. 核密度分析三、结果比对一、人口密度 人口密度是指单位土地面积上居住的人口数,通常以每平方千米或每公顷内的常住人口为单位计算。人口密度同资源、经济密切结合,因此,科学准确地分析人口密度的分布情况,对合理制定…

林业无人机如何提升巡山护林效率?

在郁郁森林之上,一架无人机正盘旋在上空时刻观察着林区的情况。凭借复亚智能的全自动巡检系统,无人机巡山护林的巡视范围和反馈实时性得到了显著提升。 一、林业无人机:科技赋能森林防火 秋季林区时常发生火灾,林业无人机在森林防…

Linux后台运行Python的py文件,如何使ssh工具退出后仍能运行

常规运行 python3 mysqlbak.py ssh工具退出后,或ctrlc中断后,程序将不在运行 后台运行 nohup python3 mysqlbak.py > mysqlbak.log & > mysqlbak.log为可选项,输出日志到指定文件,如果不写,输出日志到nohup…

Vue框架学习笔记——事件处理

文章目录 前文提要事件处理的解析过程,v-on:事件名样例代码如下:效果展示图片:v-on:事件名"响应函数"v-on简写形式响应函数添加响应函数传参占位符"$event"注意事项 前文提要 本人仅做个人学习记录,如有错误…

JAVA之异常详解

1. 异常的概念与体系结构 1.1 异常的概念 在Java中,将程序执行过程中发生的不正常行为称为异常 1. 算术异常 public class Test {public static void main(String[] args) {System.out.println(10/0);} } 因为 0 不能当被除数,所以报出了异常&#…

C++11【上】

欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 目录 👉🏻 统一的列表初始化&#x1…

unigui同页面内重定向跳转,企业微信内部应用开发获取用户code例子

procedure TMainForm.UniFormCreate(Sender: TObject); varurl: string;code: string; begin //如果没有code值,将进行重定向if UniApplication.Parameters.Values[code] thenbeginurl :https://open.weixin.qq.com/connect/oauth2/authorize?appid你们的企业ID&…

从0到0.01入门 Webpack| 004.精选 Webpack面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

RuntimeError: CUDA error: device-side assert triggered

背景: 使用SAGEConv卷积层的图神经网络,网络架构如下 原因: 我在卷积层之前改变了特征矩阵的维度,原本为[172,1,32] 现在改为了 [172,2,32]。导致了特征矩阵x在进行 “x x.squeeze(1)” 操作时并没有将第二向量值去除&#xff08…

Proteus仿真--基于DS1302与1602LCD设计的可调式电子日历与时钟

本文介绍基于51单片机的DS1302与1602LCD可调式电子日历与时钟(完整仿真源文件及代码见文末链接) 仿真图如下 本设计中时间芯片选用DS1302芯片,液晶选用LCD1602模块,按键K1-K4,K1用于年月日时分选择,K2用于…