当前位置: 首页 > article >正文

【时时三省】(C语言基础)经典笔试题3

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

题目

7dda4362b7fe40109c6d70ec4c5e101c.jpg

这段代码有什么问题?

缺少free

改正: 

0768c1163c9f432c9649df66e11e4e7f.jpg

题目2

46e25d2d9c7742c69c3ab0f3fbee4695.jpg

这段代码有什么问题

过程

首先调用Test函数,然后malloc开辟了100个字节的空间,然后str是指向这块空间,然后hello拷贝到了str里面去,然后释放了这块空间,下面是如果str不等于空指针的话就使用他,free这个函数是不会让str变成空指针的,所以走到这里的时候str确实不是空指针,然后就运行了if,进来以后把world拷贝放在了str,但是因为free已经释放了,所以属于非法访问,不能运行

注意:ferr以后已经后面要加一个str=NULL

C/C++程序内存分配的几个区域:

1.栈区( stack ):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。

2.堆区( heap ):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收分配方式类似于链表。

3 .数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。

4 .代码段:存放函数体(类成员函数和全局函数)的二进制代码。


http://www.kler.cn/a/505337.html

相关文章:

  • JSON 文本的多层嵌套格式
  • 下载文件,浏览器阻止不安全下载
  • vue中的那些事(刷新+key+v-if,v-for)
  • Cesium中的CustomDataSource 详解
  • FPGA 串口与HC05蓝牙模块通信
  • LLM实现视频切片合成 前沿知识调研
  • 1Spark 基础
  • 信息系统安全设计方案,软件系统安全设计总体解决方案(Word原件)
  • docker-compose和docker-harbor
  • 大模型训练_硬件微调知识增强
  • GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文解读
  • 网络技术发展的演变与未来展望
  • Java List排序:Comparable与Comparator接口及Stream API应用
  • Eclipse 视图(View)
  • (蓝桥杯)使用前缀和与二分查找解决子数组和问题——不太甜的糖果
  • 【深度学习实战】kaggle 自动驾驶的假场景分类
  • Unity3D实现加载.abc动画模型
  • Postman接口自动化测试:批量参数化(参数文件)
  • 高通骁龙8 Elite 2性能综合测评
  • 【0391】Postgres内核 checkpointer process ① 启动初始化
  • 晨辉面试抽签和评分管理系统之八:随机编排考生的面试批次(以教师资格考试面试为例)
  • 人狗大战 Java新实现,更有趣,Java _Springboot_Spring AI
  • 深度解析 React 中 setState 的原理:同步与异步的交织
  • 前端实现doc文件预览的三种方式
  • TouchGFX学习笔记(一)
  • 微信小程序 实现拼图功能