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

面经--C语言——内存泄漏、malloc和new的区别 .c文件怎么转换为可执行程序 uart和usart的区别 继承的访问权限总结

文章目录

    • 内存泄漏
      • 预防内存泄漏的方法:
    • malloc和new的区别
    • .c文件怎么转换为可执行程序
    • uart和usart的区别
    • 继承的访问权限总结
      • 访问控制符总结
      • 1. **public**:
      • 2. **protected**:
      • 3. **private**:
        • 继承类型:

内存泄漏

内存泄漏是指程序在运行时动态分配内存后,未能及时释放已经不再使用的内存空间。内存泄漏会导致程序的内存占用不断增加,最终可能引发程序崩溃。常见的内存泄漏情况包括:

  • 动态分配内存后没有使用 free()delete 来释放内存。
  • 在循环中不断申请内存但不释放。
  • 对象生命周期结束后没有及时清除内存。

预防内存泄漏的方法:

  1. 合理使用 free()delete: 每次使用 malloc()calloc()new 分配内存后,应该在使用完之后调用 free()delete 来释放内存。
  2. 智能指针:在 C++ 中,可以使用智能指针如 std::unique_ptrstd::shared_ptr 来自动管理内存。
  3. 内存检测工具:使用内存泄漏检测工具,如 ValgrindAddressSanitizer 来检测内存泄漏。

malloc和new的区别

malloc()new 都用于动态内存分配,但它们有一些重要的区别:

特性mallocnew
返回类型返回 void* 类型,需要强制转换成目标类型返回目标类型的指针
初始化内存不会初始化分配的内存,内存中的数据为垃圾值会初始化分配的内存,默认为零
异常处理如果分配失败,返回 NULL如果分配失败,抛出 std::bad_alloc 异常
释放内存使用 free() 来释放内存使用 delete 来释放内存
语言支持适用于 C 语言适用于 C++,并且支持对象的构造与析构

.c文件怎么转换为可执行程序

在 C 语言中,.c 文件需要经过编译、链接等过程才能生成可执行程序。具体步骤如下:

  1. 编译源代码
    使用 C 编译器(如 GCC)将 .c 文件编译为目标文件(.o 文件)。命令格式:

    gcc -c filename.c -o filename.o
    
  2. 链接目标文件
    将目标文件与所需的库文件链接,生成最终的可执行文件。命令格式:

    gcc filename.o -o output_executable
    
  3. 运行可执行文件
    在命令行中运行生成的可执行文件:

    ./output_executable
    

如果你直接用 gcc filename.c -o output_executable 命令,编译和链接的步骤会自动合并。

uart和usart的区别

UART(Universal Asynchronous Receiver-Transmitter)和 USART(Universal Synchronous Asynchronous Receiver-Transmitter)都用于串行通信,但它们之间有一些关键的区别:

特性UARTUSART
通信方式只支持异步通信支持同步和异步通信
传输模式不需要时钟信号需要时钟信号(用于同步模式)
应用场景适用于大多数简单的串行通信用于高速数据传输以及同步数据流
常见设备用于常见的串口通信设备(如计算机、GPS、蓝牙模块等)用于更加复杂的通讯需求(如调制解调器、网络模块等)

继承的访问权限总结

在面向对象编程中,继承是非常常见的特性。C++ 提供了三种访问控制符:publicprotectedprivate,它们决定了基类成员在派生类中的访问权限。

访问控制符总结

访问控制符类内部派生类类外部
public可访问可访问可访问
protected可访问可访问不可访问
private可访问不可访问不可访问

1. public:

  • 基类中的 public 成员可以被派生类和类外部访问。
  • 可以在派生类中继承,派生类成员仍然保持 public 权限。

2. protected:

  • 基类中的 protected 成员可以被派生类访问,但不能被类外部访问。
  • 通常用于在派生类中修改或使用这些成员。

3. private:

  • 基类中的 private 成员只能在基类内部访问,派生类和类外部都不能访问。
  • 如果派生类需要访问这些成员,可以通过公有或受保护的成员函数来间接访问。
继承类型:
  • 公有继承public): 基类的 publicprotected 成员在派生类中保持其访问级别。
  • 保护继承protected): 基类的 publicprotected 成员在派生类中变为 protected
  • 私有继承private): 基类的 publicprotected 成员在派生类中变为 private

相关文章:

面经--C语言——内存泄漏、malloc和new的区别 .c文件怎么转换为可执行程序 uart和usart的区别 继承的访问权限总结

文章目录 内存泄漏预防内存泄漏的方法: malloc和new的区别.c文件怎么转换为可执行程序uart和usart的区别继承的访问权限总结访问控制符总结1. **public**:2. **protected**:3. **private**:继承类型: 内存泄漏 内存泄漏是指程序在运行时动态分配内存后&…...

Denavit-Hartenberg DH MDH坐标系

Denavit-Hartenberg坐标系及其规则详解 6轴协作机器人的MDH模型详细图_6轴mdh-CSDN博客 N轴机械臂的MDH正向建模,及python算法_mdh建模-CSDN博客 运动学3-----正向运动学 | 鱼香ROS 机器人学:MDH建模 - 哆啦美 - 博客园 机械臂学习——标准DH法和改进MDH…...

力扣动态规划-20【算法学习day.114】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.网格中的最小路径代价 题目链接…...

计算机视觉-边缘检测

一、边缘 1.1 边缘的类型 ①实体上的边缘 ②深度上的边缘 ③符号的边缘 ④阴影产生的边缘 不同任务关注的边缘不一样 1.2 提取边缘 突变-求导(求导也是一种卷积) 近似,1(右边的一个值-自己可以用卷积做) 该点f(x,y)…...

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…...

掌握 HTML5 多媒体标签:如何在所有浏览器中顺利嵌入视频与音频

系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...

在Mac mini M4上部署DeepSeek R1本地大模型

在Mac mini M4上部署DeepSeek R1本地大模型 安装ollama 本地部署,我们可以通过Ollama来进行安装 Ollama 官方版:【点击前往】 Web UI 控制端【点击安装】 如何在MacOS上更换Ollama的模型位置 默认安装时,OLLAMA_MODELS 位置在"~/.o…...

【电脑系统】电脑突然(蓝屏)卡死发出刺耳声音

文章目录 前言问题描述软件解决方案尝试硬件解决方案尝试参考文献 前言 在 更换硬盘 时遇到的问题,有时候只有卡死没有蓝屏 问题描述 更换硬盘后,电脑用一会就卡死,蓝屏,显示蓝屏代码 UNEXPECTED_STORE_EXCEPTION 软件解决方案…...

Docker使用指南(二)——容器相关操作详解(实战案例教学,创建/使用/停止/删除)

目录 1.容器操作相关命令​编辑 案例一: 案例二: 容器常用命令总结: 1.查看容器状态: 2.删除容器: 3.进入容器: 二、Docker基本操作——容器篇 1.容器操作相关命令 下面我们用两个案例来具体实操一…...

Java中的常见对象类型解析

在Java开发中,数据的组织和传递是一个重要的概念。为了确保代码的清晰性、可维护性和可扩展性,我们通常会根据不同的用途,设计和使用不同类型的对象。这些对象的作用各不相同,但它们共同为构建高效、模块化的软件架构提供支持。 …...

Dijkstra算法解析

Dijkstra算法,用于求解图中从一个起点到其他所有节点的最短路径。解决单源最短路径问题的有效方法。 条件 有向 带权路径 时间复杂度 O(n平方) 方法步骤 1 把图上的点分为两个集合 要求的起点 和除了起点之外的点 。能直达的写上权值 不…...

C++ Primer 多维数组

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

maven mysql jdk nvm node npm 环境安装

安装JDK 1.8 11 环境 maven环境安装 打开网站 下载 下载zip格式 解压 自己创建一个maven库 以后在idea 使用maven时候重新设置一下 这三个地方分别设置 这时候maven才算设置好 nvm 管理 npm nodejs nvm下载 安装 Releases coreybutler/nvm-windows GitHub 一键安装且若有…...

SQL Server中RANK()函数:处理并列排名与自然跳号

RANK()是SQL Server的窗口函数,为结果集中的行生成排名。当出现相同值时,后续排名会跳过被占用的名次,形成自然间隔。与DENSE_RANK()的关键区别在于是否允许排名值连续。 语法: RANK() OVER ([PARTITION BY 分组列]ORDER BY 排序…...

如何运行Composer安装PHP包 安装JWT库

1. 使用Composer Composer是PHP的依赖管理工具,它允许你轻松地安装和管理PHP包。对于JWT,你可以使用firebase/php-jwt这个库,这是由Firebase提供的官方库。 安装Composer(如果你还没有安装的话): 访问Co…...

最新功能发布!AllData数据中台核心菜单汇总

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨奥零数据科技官网:http://www.aolingdata.com ✨AllData开源项目:https://github.com/alldatacenter/…...

【OS】AUTOSAR架构下的Interrupt详解(上篇)

目录 前言 正文 1.中断概念分析 1.1 中断处理API 1.2 中断级别 1.3 中断向量表 1.4 二类中断的嵌套 1.4.1概述 1.4.2激活 1.5一类中断 1.5.1一类中断的实现 1.5.2一类中断的嵌套 1.5.3在StartOS之前的1类ISR 1.5.4使用1类中断时的注意事项 1.6中断源的初始化 1.…...

大数据挖掘--两个角度理解相似度计算理论

文章目录 0 相似度计算可以转换成什么问题1 集合相似度的应用1.1 集合相似度1.1文档相似度1.2 协同过滤用户-用户协同过滤物品-物品协同过滤 1.2 文档的shingling--将文档表示成集合1.2.1 k-shingling1.2.2 基于停用词的 shingling 1.3 最小哈希签名1.4 局部敏感哈希算法&#…...

Win10微软商店重新安装指南

Win10微软商店重新安装指南 在使用Windows 10操作系统的过程中,微软商店(Microsoft Store)作为官方提供的应用下载平台,一直是用户获取和安装各类应用程序的重要渠道。然而,有时用户可能会遇到微软商店无法找到或误删的情况,这无疑给软件的安装和管理带来了不便。本文将…...

操作系统和中间件的信息收集

在浏览器中收集操作系统与中间件信息时,主要通过客户端JavaScript(用于操作系统/浏览器信息)和服务器端脚本(用于中间件信息)实现。以下是分步指南: 一、客户端操作系统信息收集(JavaScript&am…...

重构鼠标潜能:Mac Mouse Fix全场景优化指南

重构鼠标潜能:Mac Mouse Fix全场景优化指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix是一款开源工具,专为解决m…...

Redux vs MVI:Android状态管理实战对比(附Kotlin代码示例)

Redux vs MVI:Android状态管理实战对比(附Kotlin代码示例) 在Android开发中,状态管理一直是构建可维护、可测试应用的核心挑战。随着应用复杂度提升,如何优雅地处理UI状态、用户交互和数据流,成为开发者必…...

解锁戴森电池3大突破:固件破解技术让32次红灯故障电池重生

解锁戴森电池3大突破:固件破解技术让32次红灯故障电池重生 【免费下载链接】FU-Dyson-BMS (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System 项目地址: https://gitcode.com/gh_mirrors/fu/FU-Dyson-BMS 当你的戴森吸尘器突…...

无人机组装调试仿真教学软件技术解析(架构+功能+落地)| 产品实测

在无人机职业教育领域,仿真教学软件的核心价值是“还原实操场景、降低落地成本、提升教学效率”,但目前多数同类软件普遍存在架构冗余、3D交互卡顿、功能与教学场景脱节、后台管理薄弱等痛点,难以满足院校规模化、标准化的组装调试教学需求。…...

别再死磕Release了!用Debug模式打包Qt exe,一次搞定所有dll依赖(附GPT脚本生成技巧)

用Debug模式打包Qt应用:绕过Release陷阱的高效解决方案 当Qt开发者第一次尝试将项目打包成可独立运行的exe文件时,绝大多数教程都会推荐使用Release模式编译。然而在实际操作中,Release模式可能会带来一系列难以排查的问题——从莫名其妙的崩…...

Abp微服务之间的DTO不要使用object作为字段类型

这是一个典型的ABP vNext 微服务间接口定义和序列化问题&#xff0c;当类型定义为 object时&#xff0c;在不同服务之间传输会导致类型信息丢失。// 服务A public interface IMyServiceA : IApplicationService {Task<MyDto> GetDataAsync(); }public class MyDto {publi…...

国产隔离器信号孤岛保卫战

国产隔离器正以绝缘屏障铸就信号孤岛——当8kV静电在光伏接线盒上炸出刺目蓝光&#xff0c;当10V/m射频噪声如潮水般淹没地铁信号回波&#xff0c;这条工业设备的生死线上&#xff0c;我们以GB/T 17626标准为矛&#xff0c;以-40℃~85℃环境适应性为盾&#xff0c;在电磁风暴与…...

终极指南:如何用Fara-7B实现智能电脑自动操作

终极指南&#xff1a;如何用Fara-7B实现智能电脑自动操作 【免费下载链接】fara Fara-7B: An Efficient Agentic Model for Computer Use 项目地址: https://gitcode.com/gh_mirrors/fara/fara Fara-7B是微软推出的首个专门为电脑自动操作设计的7B参数智能代理模型&…...

企业级后台快速开发解决方案:Element-UI Admin全指南

企业级后台快速开发解决方案&#xff1a;Element-UI Admin全指南 【免费下载链接】element-ui-admin 基于 element-ui 的单页面后台管理项目模版 项目地址: https://gitcode.com/gh_mirrors/el/element-ui-admin Element-UI Admin是一款基于Element-UI组件库的单页面后台…...

用快马平台十分钟复刻notepad++:打造你的轻量级web代码编辑器原型

今天尝试用InsCode(快马)平台快速复刻一个Notepad风格的Web代码编辑器原型&#xff0c;整个过程比想象中顺利很多。作为一个经常需要临时测试代码片段的开发者&#xff0c;这种轻量级工具特别适合快速验证想法。 确定核心功能框架 首先梳理了Notepad最常用的几个功能&#xff1…...