C语言进阶课程学习记录-第39课 - 程序中的3个基本数据区

C语言进阶课程学习记录-第39课 - 程序中的3个基本数据区

    • 实验-栈空间释放后数据无效
    • 静态存储区
    • 实验-静态变量和全局变量
    • 小结

本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

实验-栈空间释放后数据无效

#include <stdio.h>int* g()
{int a[10] = {0};return a;
}void f()
{int i=0;int b[10]={0,1,2,3,4,5,6,7,8,9};int* pointer = g();//case1:
//    for(i=0;i<10;i++)
//    {
//        b[i]=pointer[i];
//
//
//    }
//    for(i=0;i<10;i++)
//    {
//        printf("%d\t",b[i]);
//
//
//    }//case2:for(i=0;i<10;i++){printf("%d\t",pointer[i]);}
}int main()
{f();return 0;
}/*output:
case1: 0       0       0       0       0       0       0       0       0       0
g()函数返回后,没调用其他函数,只有栈指针的数字变化了,pointer指向的内存空间的数字未更改
case2: 0       -1515052169     6356696 4202536 4202496 8       6356588 0       6356940 1979305152
g的活动记录被printf覆盖了,导致数字混乱pointer指向的空间是没有意义的*/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

静态存储区

在这里插入图片描述

实验-静态变量和全局变量

#include <stdio.h>int g_v = 1;static int g_vs  = 2;void f()
{static int g_vl = 3;printf("%p\n", &g_vl);
}int main()
{printf("%p\n", &g_v);printf("%p\n", &g_vs);f();return 0;
}/*output:
00402000
00402004
00402008*/

小结

程序中的3个基本数据区:栈,堆和静态存储区
栈区主要用于函数调用的使用
堆区主要用于内存的动态申请和归还
静态存储区用于保存全局变量和静态变量

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

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

相关文章

吴恩达机器学习笔记:第 8 周-13 聚类(Clustering)13.1-13.2

目录 第 8 周 13、 聚类(Clustering)13.1 无监督学习&#xff1a;简介 第 8 周 13、 聚类(Clustering) 13.1 无监督学习&#xff1a;简介 在这个视频中&#xff0c;我将开始介绍聚类算法。这将是一个激动人心的时刻&#xff0c;因为这是我们学习的第一个非监督学习算法。我们…

Day3 权限管理

Day3 权限管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 创建管理员…

Windows的Tensorrt的安装

Tensorrt的下载 确定自己的CUDA版本,匹配的去下载Tensorrt。 Tensorrt的下载 下载完成之后,直接解压到文件夹即可。 环境变量配置 最重要的一部就是环境变量的配置。 官方的安装指导文件给出了两种方法: (1)要么直接将/lib 添加到环境变量 PATH 中 (诶,windows没有LD_L…

[AI Meta Llama-3] 最强开源大模型Llama 3发布!

最强开源大模型Llama 3发布&#xff01;我们看下重点&#xff1a; 今天&#xff0c;我们介绍Meta Llama 3&#xff0c;这是我们最先进的开源大型语言模型的下一代。Llama 3模型很快将在AWS、Databricks、Google Cloud、Hugging Face、Kaggle、IBM WatsonX、Microsoft Azure、N…

异步 IO 机制 io_uring

一、io_uring 原理 如何解决频繁 copy 的问题 → mmap 内存映射解决。 submit queue 中的节点和 complete queue 中的节点共用一块内存,而不是把 submit queue 中的节点 copy 到 complete queue 中。如何做到线程安全 → 无锁环形队列解决。二、io_uring 使用 内核为 io_uring…

Pytorch实用教程:nn.CrossEntropyLoss()的用法

在 PyTorch 中&#xff0c;nn.CrossEntropyLoss() 是一个非常常用且功能强大的损失函数&#xff0c;特别适合用于多类分类问题。这个损失函数结合了 nn.LogSoftmax() 和 nn.NLLLoss() (Negative Log Likelihood Loss) 两个操作&#xff0c;从而在一个模块中提供完整的交叉熵损失…

[qiankun]: Target container with #container not existed while childOne loading!

主应用container容器不存在导致无法挂载子应用 解决&#xff1a;不要将<div id"container"></div>放在Router标签内&#xff0c;跟Router同级即可

2024年核科学与地球化学国际会议 (ICNSG 2024)

2024年核科学与地球化学国际会议 (ICNSG 2024) 2024 International Conference on Nuclear Science and Geochemistry 【会议简介】 2024年核科学与地球化学国际会议即将在北京召开。本次会议旨在汇聚全球核科学与地球化学领域的专家学者&#xff0c;共同探讨核科学的最新进展…

Django模型的字段类型

Django模型中最重要并且也是唯一必须执行的就是字段定义。字段在类中进行定义&#xff0c;对应于实体数据库的字段。另外&#xff0c;定义模型字段名时为了避免冲突&#xff0c;不建议使用模型API中已经定义的关键字。 字段类型用以指定数据库的数据类型&#xff0c;例如Integ…

美团外卖10元无门槛通用券怎么领取10元外卖通用红包?

词令公众号美团外卖红包天天领入口&#xff0c;首次使用的外卖新客可领取10元无门槛通用券&#xff0c;点餐使用即可享受优惠&#xff1b; 美团外卖10元无门槛通用券怎么领取&#xff1f; 1、关注「词令」公众号&#xff0c;回复「外卖红包」&#xff1b; 2、打开后立即领取外…

R语言 并行计算makeCluster报错

问题&#xff1a;使用parallel包进行并行计算&#xff0c; cl <- makeCluster(detectCores()) 出现以下问题&#xff1a; 解决方式&#xff1a;用makeClusterPSOCK命令代替即可 library("future") cl <- makeClusterPSOCK(124, revtunnel TRUE, outfile &…

日志记录不再烦恼!Python开发利器Logbook模块带你飞!

在Python开发中&#xff0c;日志记录是一项至关重要的功能。通过记录应用程序的运行状态、错误信息和调试信息&#xff0c;可以帮助开发人员更好地理解程序的运行情况&#xff0c;快速定位问题并进行调试。 Python标准库中的logging模块提供了基本的日志记录功能&#xff0c;但…

华为ensp中Hybrid接口原理和配置命令

作者主页&#xff1a;点击&#xff01; ENSP专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月19日14点03分 Hybrid接口是ENSP虚拟化中的一种重要技术&#xff0c;它既可以连接普通终端的接入链路&#xff0c;又可以连接交换机间的干道链路。Hybrid接口允许多…

德鲁伊参数踩坑之路

上文说到 Druid德鲁伊参数调优实战&#xff0c;也正因此次优化&#xff0c;为后续问题埋下了伏笔 背景 2024/04/16日&#xff0c;业务反馈某个定时统计的数据未出来&#xff0c;大清早排查定位是其统计任务跑批失败&#xff0c;下面给一段伪代码 // 无事务执行 public void …

Linux 基于 UDP 协议的简单服务器-客户端应用

目录 一、socket编程接口 1、socket 常见API socket()&#xff1a;创建套接字 bind()&#xff1a;将用户设置的ip和port在内核中和我们的当前进程关联 listen() accept() 2、sockaddr结构 3、inet系列函数 二、UDP网络程序—发送消息 1、服务器udp_server.hpp initS…

java spring 05 图灵 启动性能优化

一.doscan方法的补充&#xff1a; 01.在findCandidateComponents(basePackage)方法中&#xff1a;优化&#xff0c;因为扫描package 如果存在有索引的文件&#xff0c;使用索引文件来加载bean public Set<BeanDefinition> findCandidateComponents(String basePackage)…

python教学入门:字典和集合

字典&#xff08;Dictionary&#xff09;&#xff1a; 定义&#xff1a; 字典是 Python 中的一种数据结构&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。字典使用花括号 {} 定义&#xff0c;键值对之间用冒号 : 分隔&#xff0c;每对键值对之间用逗号 …

动态规划——记忆化搜索

数字三角形 找一条最大路径。发现从上面往下一步步走很麻烦&#xff0c;直接搜索肯定超时&#xff0c;我们可以逆向求解。从下往上看。从倒数第二行开始看&#xff0c;2可以选4和5&#xff0c;因为找最大&#xff0c;所以我们选5&#xff0c;把2加上5更新为7&#xff0c;以此类…

vs2022断点空心加感叹号 解决方案

有时会出现设置的调试时&#xff0c;断点红色断点出现黄色的感叹号&#xff0c;并提示与原版本不同&#xff0c;现两种解决办法。 1、“工具”&#xff0c;“选项”&#xff0c;“调试”&#xff0c;“要求源文件与原始版本完成匹配”去掉勾。

设计模式系列:适配器模式

简介 适配器模式&#xff08;Adapter Pattern&#xff09;又称为变压器模式&#xff0c;它是一种结构型设计模式。适配器模式的目的是将一个类的接口转换成客户端所期望的另一种接口&#xff0c;从而使原本因接口不匹配而不能一起工作的两个类能够一起工作。 适配器模式有两种…