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

【嵌入式C】常见问题

1、goto的使用场景有哪些?并讨论其局限?
(1)常用来跳出死循坏;
(2)在linux开发中,常用于打印错误;
(3)goto在某些使用场合会破坏程序的栈逻辑,有一定的局限性。

2、嵌入式开发中常说的“字节对齐”是什么?
嵌入式开发中常用到的结构体,我们通常用#pragma pack(n),n为2的整数幂来指定对齐方式。

3、堆和栈的区别是什么?
(1)栈的空间是系统自动分配和回收,
堆的空间是用户手动分配回收( malloc,calloc,realloc,free)
(2)栈的空间较小,堆的空间较大
(3)栈的地址空间往地址向下增长,堆的地址空间是由低地址到高地址
(4)栈的存储效率更高

4、使用递归函数易引发什么问题?
(1)递归次数过多,会影响执行效率
(2)递归次数过多,栈区的内存分配有限,易出现栈溢出

5、sizeof()与strlen()的区别是什么?
(1)sizeof是计算能容纳实现所建立的最大对象的字节大小的运算符,参数可以是数组、指针、结构体类型、函数等;
(2)strlen是是返回字符串的长度的功能函数,其参数必须是(char*)字符型指针。

6、谈谈static关键字的作用?
一般嵌入式软件开发的本文件的函数要全部使用static关键字声明,这样是一个好的编程规范。
静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。
静态局部变量在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。

6、谈谈const关键字的作用?
(1)在变量初次定义时赋初,并用关键字const修饰,使变量只可访问,不能重新赋值修改变量;
(2)指针变量指向的位置不能被修改。定义时,被 const 修饰的指针变量指针只能在定义时初始化,不能定义之后重新指向新的数据。
(3)修饰的指针变量指向的变量的值不能被修改,但是该指针可以指向其它空间。
(4)指针变量指向的位置不能被修改,并且指针变量指向变量的值也不能被修改。
(5)函数形参可以利用const关键字进行限制,来防止在函数内部修改指针指向的数据。

6、谈谈volatile关键字的作用?
(1)裸机编程时,某变量是指向寄存器中某一特定地址,添加volatile的变量不进行优化处理;
(2)在多线程中修饰共享全局变量和某函数与中断函数共享全局变量时,加上volatile,让编译器不要省略该变量的访问;

7、内存泄漏和内存溢出是指的什么?
(1)内存溢出是指程序申请内存时,没有足够的内存供申请者使用。
(2)内存泄漏是指程序在申请内存后,无法释放已申请的内存空间。
内存泄漏堆积后就会造成内存溢出。

8、简要写一下嵌入式的内存布局?
栈(stack):含有环境变量、命令行参数、局部变量
堆(heap):通常由molloc()、calloc()分配内存,realloc()、free()释放内存。
数据段:
.bss段:未初始化的静态数据
.data段:已初始化的静态数据
.rodata段:常量
代码段:
.text:用户代码
.init段:系统初始化代码

相关文章:

【嵌入式C】常见问题

1、goto的使用场景有哪些?并讨论其局限? (1)常用来跳出死循坏; (2)在linux开发中,常用于打印错误; (3)goto在某些使用场合会破坏程序的栈逻辑&…...

[神经网络]Transfomer架构

一、概述 Transfomer架构与传统CNN和RNN最大的区别在于其仅依赖自注意力机制,而没有卷积/循环操作。其相较于RNN,不需要进行时序运算,可以更好的进行并行;相较于CNN,其一次可以关注全图而不局限于感受野尺寸。 二、模…...

C++之多态 虚函数表

多态 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。 需要区分一下:1、菱形虚拟继承,是在继承方式前面加上virtual; class Person {}; class Student : virtual public Person {}; class Teacher…...

AI_Papers周刊:第四期

2023.02.28—2023.03.05 Top Papers Subjects: cs.CL 1.Language Is Not All You Need: Aligning Perception with Language Models 标题:KOSMOS-1:语言不是你所需要的全部:将感知与语言模型相结合 作者:Shaohan Huang, Li …...

A Simple Framework for Contrastive Learning of Visual Representations阅读笔记

论文地址:https://arxiv.org/pdf/2002.05709.pdf 目前流行的无监督学范式。通过训练,使模型拥有比较的能力。即,模型能够区别两个数据(instance)是否是相同的。这在 深度聚类 领域受到广泛的关注。(在有监…...

mac安装开发工具:clipy、iterm2、go、brew、mysql、redis、wget等

wget brew install wget clipy Releases Clipy/Clipy GitHub 环境变量 ~下有三个文件 .zshrc .zprofile .bash_profile > cat .zshrc export PATH$PATH:/usr/local/mysql/bin> cat .zprofile eval "$(/opt/homebrew/bin/brew shellenv)"> cat .bas…...

DJ1-1 计算机网络和因特网

目录 一、计算机网络 二、Interent 1. Internet 的介绍 2. Internet 的具体构成 3. Internet 提供的服务 4. Internet 的通信控制 一、计算机网络 定义:是指两台以上具有独立操作系统的计算机通过某些介质连接成的相互共享软硬件资源的集合体。 计算机网络向…...

[1.3.3]计算机系统概述——系统调用

文章目录第一章 计算机系统概述系统调用(一)什么是系统调用,有何作用(二)系统调用与库函数的区别(三)小例子:为什么系统调用是必须的(四)什么功能要用到系统调…...

【Java开发】JUC进阶 03:读写锁、阻塞队列、同步队列

1 读写锁(ReadWriteLock)📌 要点实现类:ReentrantReadWirteLock通过读写锁实现更细粒度的控制,当然通过Synchronized和Lock锁也能达到目的,不过他们会在写入和读取操作都给加锁,影响性能&#x…...

Fragment中获取Activity的一点点建议

平时的Android开发中,我们经常要在Fragment中去获取当前的Activity实例,刚开始的时候可能使用使用Fragment提供的getActivity方法来获取,但是这个方法可能返回null,为了让程序可以正常运行,项目中就出现大量下面这样的…...

Java Math类

Java Math 类是 Java 标准库中提供的一个数学计算类,它提供了很多数学函数,如三角函数、指数函数、对数函数等。在实际工作中,Java Math 类常常被用于处理数学计算问题,例如计算复杂的数学公式、实现数学算法等。本文将详细介绍 J…...

Javascript -- 加载时间线 正则表达式

js加载时间线 1、创建Document对象,开始解析web页面,解析html元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段的document.readyState ‘loading’ 2、遇到link外部css,创建线程加载,并继续解析文档 3、遇到…...

gdb/git的基本使用

热爱编程的你,一定经常徘徊在写bug和改bug之间,调试器也一定是你随影而行的伙伴,离开了它你应该会寝食难安吧! 目录 gdb的使用 断点操作 运行调试 观察数据 Git的使用 仓库的创建和拉取 .gitignore “三板斧” 常用指令 gd…...

信息安全与数学基础-笔记-④二次同余方程

知识目录二次同余方程的解欧拉判别式Legendre (勒让德符号)二次同余方程的解 什么是二次同余方程的解 注意这里二次同余方程和一次同余方程是不一样的 在x2x^2x2 三 a (mod m) 方程中举例 ↓ 解即剩余类,因为是模m,所以我们在 [ 0, m-1 ]中逐个代入看是…...

Luogu P4447 [AHOI2018初中组]分组

题目链接:传送门 将nnn个可重复的整数分为mmm组,每组中的数必须连续且不重复,使人数最少的组人数最多。 两个最值肯定第一想到二分,每次二分出一个值,判断在这个值为答案的前提下能否完成分组。 在思考判别函数时发现…...

手把手创建flask项目

Flask 框架流程 什么是Flask: Flask诞生于2010年, 使用python语言基于Werkzeug工具箱编写的轻量级Web开发框架 Flask本身相当于一个内核, 其他几乎所有的功能都要用到扩展(邮件:Flask-Mail, 用户认证:Flask-Login, 数据库:Flask-SQLAlchemy). Flask的核心在于Werkz…...

SpringCloud-4_Eureka服务注册与发现

Eureka作为一个老牌经典的服务注册&发现技术,其设计和理念,也在影响后面的组件。目前主流的服务注册&发现的组件是Nacos当前项目架构问题分析-引出Eureka问题分析:1.在企业级项目中,服务消费访问请求会存在高并发2.如果只…...

【react全家桶】生命周期

文章目录04 【生命周期】1.简介2.初始化阶段2.1 constructor2.2 componentWillMount(即将废弃)2.3 static getDerivedStateFromProps(新钩子)2.4 render2.5 componentDidMount2.6 初始化阶段总结3.更新阶段3.1 componentWillRecei…...

虚拟机安装Windows 10

虚拟机安装Windows 10 镜像下载 方法一:下载我制作好的镜像文件->百度网盘链接 提取码:Chen 方法二:自己做一个 进入微软官网链接 下载"MediaCreationTool20H2" 运行该工具 点击下一步选择路径,等他下载好就欧克了…...

【CMU15-445数据库】bustub Project #2:B+ Tree(下)

Project 2 最后一篇,讲解 B 树并发控制的实现。说实话一开始博主以为这块内容不会很难(毕竟有 Project 1 一把大锁摆烂秒过的历史x),但实现起来才发现不用一把大锁真的极其痛苦,折腾了一周多才弄完。 本文分基础版算法…...

qmcdump:QQ音乐加密文件解码完全解决方案

qmcdump:QQ音乐加密文件解码完全解决方案 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 1 解析问题&#x…...

Pixel Couplet Gen效果展示:基于用户画像(年龄/地域)的像素春联风格个性化推荐

Pixel Couplet Gen效果展示:基于用户画像(年龄/地域)的像素春联风格个性化推荐 1. 项目概览 Pixel Couplet Gen是一款融合传统春节文化与现代像素艺术风格的AI春联生成器。通过ModelScope大模型的强大生成能力,结合精心设计的8-…...

Qwen3.5-9B-AWQ-4bit效果展示:高清截图OCR、场景描述、主体识别实测集

Qwen3.5-9B-AWQ-4bit效果展示:高清截图OCR、场景描述、主体识别实测集 1. 模型能力概览 Qwen3.5-9B-AWQ-4bit是一款基于量化技术的多模态视觉理解模型,能够同时处理图像和文本输入,输出高质量的中文分析结果。这个4bit量化版本在保持核心能…...

告别云端依赖!DeepSeek-R1-Distill-Qwen-1.5B离线运行全攻略

告别云端依赖!DeepSeek-R1-Distill-Qwen-1.5B离线运行全攻略 1. 为什么选择离线运行DeepSeek-R1-Distill-Qwen-1.5B? 在AI应用日益普及的今天,大多数用户仍然依赖云端服务来运行大语言模型。但云端服务存在隐私泄露、网络延迟、使用成本高等…...

墨语灵犀网络安全知识库:基于AI的威胁情报分析与解读

墨语灵犀网络安全知识库:让AI成为你的安全分析师 最近和几个做安全运营的朋友聊天,他们都在抱怨同一件事:每天面对海量的安全告警和晦涩的漏洞报告,眼睛都快看花了。一份新的漏洞描述扔过来,光是理解它到底在说什么、…...

MeteorSeed

从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难…...

气动元器件选型(工业自动化场景实战指南)

1. 气动技术基础与工业自动化适配性 气动技术作为工业自动化领域的核心驱动方式之一,其本质是通过压缩空气实现能量传递。想象一下,就像我们用吸管吹动纸团一样简单直接——空压机将电动机的旋转动能转化为气压能,再通过各类阀门控制气流方向…...

07_Cursor之语言支持与扩展生态

关键字:语言支持, VS Code扩展, 跨平台, Electron, Python开发, 扩展生态 07_Cursor之语言支持与扩展生态 Cursor知识体系 Cursor知识体系(续) | -- 生态支持层 | -- 多语言支持 | | -- 通用LLM支持 | | -- 自动语言检测 | | …...

《QGIS快速入门与应用基础》256:SVG格式:适合矢量图二次编辑

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

【独家首发】CPython内存管理策略白皮书(基于v3.9–v3.13源码比对):37处关键宏定义、12个GC阈值参数、8类对象内存布局差异

第一章:CPython内存管理策略全景概览CPython 作为 Python 官方解释器,其内存管理机制融合了引用计数、循环垃圾回收(GC)与分代回收策略,形成一套兼顾实时性与鲁棒性的综合体系。理解该机制对诊断内存泄漏、优化对象生命…...