面试题: malloc与new的区别
malloc
,free
是C
语言中的库函数,new
,delete
是C++
中的运算符new
自动计算分配内存的大小,malloc
需要手动计算分配内存的大小new
返回对象类型的指针,malloc
返回的是void*
类型,需要显式类型转换new
分配失败抛出异常,malloc
分配失败返回NULL
new
是在自由存储区(堆)进行分配,malloc
通常在堆上分配(malloc
分配的空间是虚拟内存,物理内存的映射对应关系在初始化的时候被分配,即“延迟分配”,物理内存首次访问的时候才被分配)delete
需要类型对象的指针,free
是void*
类型的指针
面试潜在问题:
-
malloc
分配的是物理内存还是虚拟内存?- 虚拟内存
-
malloc
调用后是否立刻得到物理内存?- 并不是,会有“延迟分配”,在初始化的时候才被分配物理内存
-
free(p)
怎么知道该释放多大的空间?-
malloc
时会在分配空间地址前存储“元数据” -
内存换系统会查看“元数据(metadata)”中分配的内存块的大小
-
-
free
释放内存之后,内存还在吗?brk
返回内存池mmap
释放内存
malloc
, calloc
, realloc
malloc
, calloc
, 和 realloc
是 C 语言中用于动态内存分配的三个基本函数,它们都定义在 stdlib.h
头文件中。尽管这些函数都是用于分配内存,但它们在用法和行为上有一些关键的区别:
1. malloc
(Memory Allocation)
分配指定数量的字节,分配的内存内容是未初始化的,可能包含任何随机数据。当只需要分配内存而不关心其初始内容时使用。
void* malloc(size_t size);
// size:需要分配的内存大小,以字节为单位。
2. calloc
(Contiguous Allocation)
为指定数量的元素分配内存,每个元素有指定的大小,并且初始化所有位为零。
void* calloc(size_t num, size_t size);
// num:需要分配的元素数量。
// size:每个元素的大小,以字节为单位。
3. realloc
(Re-Allocation)
重新调整之前分配的内存块的大小。
- 如果新大小大于原始大小,额外的内存区域不会被初始化。
- 可以扩大或缩小内存块,如果必要,可能会移动内存块到新位置。
void* realloc(void* ptr, size_t new_size);
// ptr:原有内存块的指针。如果 ptr 为 NULL,realloc 的行为类似于 malloc(new_size)。
// new_size:重新分配的内存块的新大小,以字节为单位。
最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB
相关文章:
面试题: malloc与new的区别
malloc, free是C语言中的库函数, new, delete是C中的运算符new自动计算分配内存的大小,malloc需要手动计算分配内存的大小new返回对象类型的指针,malloc返回的是void*类型,需要显式类型转换new分配失败抛出异常,malloc…...
欧鹏RHCE 第五次作业
unit5.DNS域名解析服务的部署及优化方案 1. (问答题) 1.配置2台服务器要求如下: a)服务器1: 主机名:dns-master.timinglee.org ip地址: 172.25.254.100 配置好软件仓库 b)服务器2: 主机名&…...

数仓分层——ODS、DW、ADS
一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持…...

计算机视觉——OpenCV Otsu阈值法原理及实现
算法简介 Otsu阈值法,也被称为大津算法,是一种在图像处理中广泛使用的自动阈值分割技术。这种方法由日本学者大津展之于1979年提出,旨在根据图像的灰度直方图来自动选择最佳全局阈值。Otsu阈值法的核心思想是最小化类内方差或最大化类间方差…...

个人IP打造孵化运营产业链商业计划书
【干货资料持续更新,以防走丢】 个人IP打造孵化运营产业链商业计划书 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT共90页(完整资料包含以下内容) 目录 个人IP运营方案: 1. 个人IP定位与构建 1.1 人格画像构…...
R语言:卡方检验
χ2检验(Chi-Square Test)是一种用于检验分类变量之间是否存在相关性的统计方法。χ2检验的原理基于观察到的频数与期望频数之间的偏差来判断分类变量之间是否存在显著的关联。 χ2检验的原理可以概括为以下几个步骤: 建立假…...

基于51单片机的电子钟秒表LCD1602仿真设计( proteus仿真+程序+设计报告+原理图+讲解视频)
基于51单片机的电子钟秒表LCD1602仿真设计( proteus仿真程序设计报告原理图讲解视频) 这里写目录标题 1. 主要功能:2. 讲解视频:3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 仿真图proteus7.8及以上 程序…...

latex参考文献引用网址,不显示网址问题
以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…...

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)
目录 前言1. Mybatis2. MybatisPlus3. 实战 前言 更多的知识点推荐阅读: 【Java项目】实战CRUD的功能整理(持续更新)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 本章节主要以Demo为例ÿ…...

nginx--tcp负载均衡
mysql负载均衡 安装mysql yum install -y mariadb-server systemctl start mariadb systemctl enable mariadb ss -ntl创建数据库并授权 MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges o…...

20240506 深度学习高级技术点
1.基于BN层剪枝 基于Batch Normalization (BN)层进行剪枝是一种常用的模型压缩方法,特别是在卷积神经网络(CNNs)中。BN层在训练期间用于加速收敛和提高模型的泛化能力,而在剪枝过程中,BN层提供的统计信息(特别是均值(mean)和方差…...

标准汽车试验铁地板的技术要求
在现代科技化发展的工作中,试验平台被广泛使用。铸铁试验平台(试验铁地板)又叫试验工作平台,听名字大家也不难想象出来这是一款带有箱式体的台面,这是一种有长方形或者圆形又或者正方形的试验工作台。 铸铁试验平台&a…...

【翻译】REST API
自动伸缩 API 创建或更新自动伸缩策略 API 此特性设计用于 Elasticsearch Service、Elastic Cloud Enterprise 和 Kubernetes 上的 Elastic Cloud 的间接使用。不支持直接用户使用。 创建或更新一个自动伸缩策略。 请求 PUT /_autoscaling/policy/<name> {"rol…...

TypeScript学习日志-第十九天(namespace命名空间)
namespace命名空间 一、基本用法 namespace 所有的变量以及方法必须要导出才能访问,如图: 二、 嵌套 namespace 可以进行嵌套使用,如图: 它也必须需要导出才能访问 三、合并 当我们出现两个同名的 namespace 它就会合并这两…...
Mac远程桌面windows11
文章目录 一、Mac安装Microsoft Remote Desktop二、Window11打开远程登录权限三、常见问题 一、Mac安装Microsoft Remote Desktop 下载地址:点击这里官方下载 基本不用看,凭感觉用就行。搞不定详情见:官方说明 二、Window11打开远程登录权…...

GPU术语
SP(Streaming Processor)流处理器 流处理器是GPU最基本的处理单元,在fermi架构开始被叫做CUDA core。 SM(Streaming MultiProcessor) 一个SM由多个CUDA core组成。SM还包括特殊运算单元(SFU),共享内存(shared memory),寄存器文件(Register …...

上海个人购房提取公积金经历和注意事项(收藏不踩坑)
在前一篇文章中,我介绍了 2024 年 4 月 24 日上海个人购房个税退税经历,我于 4 月 27 日周六,顺利办理租房公积金提取业务,资金在业务办理完成后 10 分钟左右到账。通过本文分享办理过程的材料和注意事项,避免大家踩坑…...

阿里云API网关 产品的使用笔记
阿里云的产品虽多,还是一如既往的一用一个看不懂,该模块的文档依旧保持“稳定”发挥,磕了半天才全部跑通。 用阿里云API网关的原因是,在Agent中写插件调用API的时候,需要使用Https协议,又嫌搞备案、证书等事…...

基于H.264的RTP打包中的组合封包以及分片封包结构图简介及抓包分析;FU-A FU-B STAP-A STAP-B简介;
H.264视频流的RTP封装类型分析: 前言: 1.RTP打包原则: RTP的包长度必须要小于MTU(最大传输单元),IP协议中MTU的最大长度为1500字节。除去IP报头(20字节)、UDP报头(8字节)、RTP头&a…...
OPENAI中Semantic Kernel实现原理以及示例代码用PYTHON来实现
OPENAI中Semantic Kernel实现原理以及示例代码用PYTHON来实现 前言 在人工智能领域,自然语言处理是一个非常重要的研究方向。而在自然语言处理中,语义理解是一个非常关键的问题。在这个领域中,OPENAI的Semantic Kernel是一个非常有名的工具…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
WEB3全栈开发——面试专业技能点P7前端与链上集成
一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染(SSR)与静态网站生成(SSG) 框架,由 Vercel 开发。它简化了构建生产级 React 应用的过程,并内置了很多特性: ✅ 文件系…...