2025年Occupancy还有入门研究的方向吗?

点击下方卡片,关注“自动驾驶Daily”公众号

戳我-> 领取近15个自动驾驶方向路线

1、背景

随着自动驾驶及更广泛的机器人技术的蓬勃发展,无人系统对准确、高效且通用的环境感知能力的需求愈发迫切。其中,Bird’s-Eye View (BEV) 感知因其无遮挡的空间结构表示受到了广泛关注。然而,由于BEV缺乏对高度信息的建模能力,难以全面理解3D环境结构。相比之下,对周围环境进行稠密三维 (Dense 3D) 建模能够使车辆或机器人系统具备对环境更全面、细致且连续的感知,为复杂场景下的理解与决策提供坚实支撑。由此,基于占用网格  (Occupancy) 感知作为一种稠密建模3D空间占据状态的技术,近年来迅速崛起,并成为感知系统下一代形态的代表。

具体而言,Occupancy是将三维空间以固定尺寸的体素为单位进行划分,目标是预测每个体素单元的占据状态,如(“空闲”或“被占据”),甚至可进一步将“被占据”的类别进一步细化为语义占据类别(如车辆、行人、建筑等),从而构建出稠密、统一的空间表示。Occupancy具备对环境的三维感知能力,可对不规则的障碍物进行预测,且能够高度兼容下游任务,如轨迹预测、规划、决策、控制等模块。在端到端自动驾驶系统中,Occupancy已成为连接感知与决策的重要中间接口。目前,随着实际需求升级和技术迭代,Occupancy的感知任务又可分为3D Occupancy Prediction4D Occupancy Forecasting,前者专注于对当前时刻的体素占用预测,而后者则增加了时间维度,着眼于未来时刻的占据状态预测。本文在调研已有文献基础上,融合笔者的个人理解,将将围绕上述脉络展开讨论,全文分为四大部分:

  • 3D Semantic Scene Completion

  • 3D Occupancy Prediction

    • 3.1 基于激光雷达的 3D Occupancy Prediction

    • 3.2 基于摄像头的3D Occupancy Predition

    • 3.3 基于多模态融合的3D Occupancy Prediction

  • 4D Occupancy Forecasting

  • 主要研究挑战

  • 未来研究方向

  • 总结

在此基础上,我们希望帮助读者理清自动驾驶 Occupancy 感知的发展现状,以及可能的未来突破方向。

2. 3D Semantic Scene Completion

3D Semantic Scene Completion(3D SSC)旨在在稀疏或不完整的观测输入下,完成三维场景的几何和语义信息推理。SSC不同于传统的3D语义分割,其不仅需完成对可观测部分的语义标注,还需对不可观测区域进行几何与语义的补全推理[1]。这种任务依赖于从输入数据中学习到的空间结构先验与上下文关联,极具挑战性,尤其是在大规模、遮挡严重的户外自动驾驶场景下。该任务最初主要应用于室内场景,但近年来逐渐向室外自动驾驶环境迁移,并成为Occupancy感知领域的关键组成部分,SSC的主要数据集及形式如下图所示。

假设一个不完整的三维场景表示为  ,3D SSC的目的是通过一个函数  ,预测一个稠密的、带有语义信息的三维场景  ,使得   尽量逼近真实三维场景  。一般情况下,  明显比   稀疏。此时,通常需要从大量的   配对数据中学习先验知识来完成 SSC任务。

SSC这一研究方向最早由Song等人[2]提出,并强调语义信息与几何结构信息是密不可分、相互依赖的两类关键信息。因此,SSC不仅要识别出哪些空间区域被物体占据(occupancy),还需进一步推理出这些占据区域所对应的语义类别(如建筑、人、车辆等)。这说明了语义-几何协同建模的重要性,也为后续研究提供了理论基础。随后在SUNCG等合成数据集上开展了大量研究。SSCNet[2]使用3D CNN结构,对输入的RGB-D数据进行体素化后直接进行体素分类,作为最早提出SSC任务的模型,为后续研究提供了理论基础。JS3C-Net[3]提出融合2D与3D双流语义建模的方法,基于投影一致性假设的监督方式,有效提升遮挡区域语义补全能力。该方法标志着SSC研究从单一模态建模迈向多模态融合。

SSC作为Occupancy感知的重要前置任务,其核心优势在于:1)、提供了一种统一建模几何与语义的表示方式;2)、 关注区域建模能力,贴合真实场景需求;然而,SSC也存在一些挑战,如真实标签稀缺、动态场景适应困难、室内室外数据分布差异显著等。随着Occupancy建模任务边界的扩展,SSC正逐步从研究辅助走向实际部署,其方法与思路将在后续章节的3D与4D Occupancy感知中继续延展。

3、3D Occupancy Prediction

3D 占用预测(3D Occupancy Prediction)旨在从传感器(如多目相机或激光雷达)获取的场景信息中推断出环境中每个体素(Voxel)的状态空闲还是被占据,并可进一步赋予语义类别,以获得对场景的稠密三维理解。给定一组传感器的输入 ,其中   可以是来自多模态的输入数据(如RGB图像、深度图、点云等),目标是预测一个稠密的三维体素网格: ,其中每个体素位置   表示三维空间中的一个体素的尺寸,  为其占据状态标签。它不仅要推断可直接观测到的区域,还需对被遮挡或稀疏观测的数据进行补全,如下图所示,从而在三维空间中生成一致、完整且带有语义信息的占据表示。

自动驾驶环境感知主要使用的传感器为摄像头和激光雷达,根据输入数据的不同模态,该任务可主要分为:基于激光雷达、基于摄像头和多模态融合的3D Occupancy Prediction。

3.1 基于激光雷达的 3D Occupancy Prediction

激光雷达的点云是带有稀疏属性的,且会受到遮挡,所以激光雷达Occuapncy不仅需要将稀疏点云“补全”为稠密的三维占据预测,还要对物体进行完整的预测。基于激光雷达的占用预测的一般流程如下图所示。

首先,对输入的点云进行体素化(voxelization)和特征提取。然后,通过编码器-解码器(encoder-decoder)模块来增强表示。最后,输出稠密的完整占据结果。

当前工作中,有工作通将点云映射后使用二维分支来进行三维Occupnacy预测,比如DIFs[4]和PointOcc[5]。这些方法有效地简化了计算流程,减少了计算资源。但不可避免的丢失了高度信息,在一定程度上限制了对三维场景的完整理解和感知。虽然三维分支则可以完整保留原始数据中的空间信息,但如何平衡计算效率和精度是一个亟待解决的问题。为了在三维分支中提高内存效率,LMSCNet[6]将高度转换为特征的通道维度,可以在三维空间使用更高效的二维卷积,而不是传统的三维卷积。同时,利用U-Net架构完成语义体素分类。LMSCNet作为少数专注于室外大场景的SSC方法,兼顾了效率与建模能力,在SemanticKITTI等数据集上表现良好。S3CNet[7]提出了一种动态体素融合的后融合策略,引入2D和3D双流结构,通过融合多尺度上下文信息提升不可见区域预测能力,可带来5-12%的性能提升,进一步增强网络对遮挡场景的建模能力。PointOcc 引入三视角空间(TPV)表示点云稀疏结构,结合BEV卷积提升空间建模能力,在高维空间内保持稀疏性,显著提升了效率。SparseOcc [8]和FastOcc [9]针对点云稀疏性问题,采用稀疏卷积与注意力机制结合的方式,在保证计算效率前提下实现高精度预测。

基于LiDAR的Occupancy Prediction方法通常具备较强的结构建模能力和深度感知精度,适用于复杂几何结构和遮挡区域建模。然而,其存在的主要挑战包括:1)、点云分布非均匀,对远距离和低反射强度的区域感知能力弱;2)、  数据过于稀疏;3)、成本高,限制其在大规模部署场景中的应用。近年来的研究重点集中于稀疏表示建模、点体素转换精度提升,以及多帧点云信息的聚合策略。

3.2 基于摄像头的 3D Occupancy Prediction

随着自动驾驶系统对低成本、高可扩展性感知方案的需求增加,基于摄像头的Occupancy感知逐渐成为研究热点。主要原因与激光雷达相比,摄像头不仅设备成本低、部署灵活,而且能够捕捉丰富的颜色和纹理信息。基于摄像头的占用预测的一般流程如下图所示。

首先,对图像数据进行特征提取。接着,将二维图像特征转换到三维空间,可以进行空间信息融合以及可选的时间信息融合。最后,通过一个Occupancy Head来预测环境的占用情况。

基于图像的方法可分为单目和多目相机的输入。 MonoScene[10]是首个基于单目图像的工作,采用2D语义分割与几何提升构建体素空间,再利用3D UNet进行语义预测,在无深度监督的条件下实现稠密体素推理。TPVFormer[11]引入三视角表示(top-view、front-view、side-view)作为中间结构,通过Transformer建模不同视角间的空间上下文信息,有效缓解图像到体素的映射不确定性。VoxFormer[12]设计体素查询机制,从图像特征中显式提取与体素位置相关的上下文信息。该方法将2D图像特征通过注意力机制映射到3D体素空间,有效提升了投影精度。OccFormer[13]提出BEV与Volume双分支结构,在BEV中建模长距离上下文。SurroundOcc[14]针对环视图多相机输入的场景,构建3D稠密体素表示,并提出体素卷积结构,在OpenOccupancy等大规模数据集上验证了其出色效果。SelfOcc[15]通过引入可微渲染一致性损失,实现无监督训练场景下的Occupancy学习,该方法打破了对大量3D标注的依赖。更GaussianFormer[16]、GaussianOcc[17]、GaussianFormer-2[18]、GaussianTR[19]等一系列方法将Gaussian Splatting的方法,验证了Gaussian在Occupancy任务的有效性。

基于摄像头的Occupancy感知方法在研究中展现出强大的潜力,特别是在成本受限、对部署灵活性要求高的场景中。其优势在于:1)、多视角与时间序列图像能够提供冗余信息,弥补单帧深度不确定性;2)、图像捕捉的纹理信息有利于语义建模,尤其对小目标和远距目标识别效果更优;3)、可与BEV感知任务共享2D主干网络结构,具备较好的系统兼容性。4)、Occupancy可以作为一种通用的环境感知的表示结果,可兼容多种下游任务。然而,该方向仍面临如下挑战:1)、不准确的深度估计会传导至体素投影阶段,影响整体精度;2)  图像信息对遮挡区域推理能力弱,需结合时序建模增强补全效果,会增加计算开销;3)、投影方式选择(显式 vs 隐式)与空间一致性建模尚无统一范式。未来研究有望围绕自监督学习、跨帧语义聚合、多尺度体素表达等方向展开,进一步提升基于摄像头的Occupancy的建模能力。

3.3 基于多模态融合的 3D Occupancy Prediction

尽管单一模态方法在3D Occupancy建模上取得了显著进展,但仍难以全面覆盖复杂场景中的多样性信息。基于摄像头的图像数据可提供丰富的色彩及纹理信息,但对天气、光照等变化非常敏感,且缺乏三维信息。来自激光雷达的点云数据虽然擅长捕捉场景的空间信息,但其过于稀疏且缺乏色彩及细粒度纹理信息。多模态Occupancy感知可以结合多种模态的优势,同时减轻单一模态感知的局限性。基于摄像头的占用预测的一般流程如下图所示。

首先,大多数多模态方法将二维图像特征映射到三维空间。然后,与点云分支提取的点云特征进行融合。最后,融合后的表示经过一个可选的精细化模块和一个Occupancy Head(例如三维卷积或MLP)处理,生成Occupancy预测。其中,可选的细化模块可以是交叉注意力、自注意力和扩散去噪的组合。

在多模态Occupancy感知中,有三类主流的多模态融合策略:1)、Concatenation:将各模态体素特征直接在通道维拼接,再送入共享卷积层进行融合,结构简单,但对模态对齐精度敏感。2)、 Summation:通过轻量网络生成模态权重图,在空间层面进行加权平均,具备一定鲁棒性。3)、Cross Attention:显式建模多个模态间的对应关系,在语义不一致或结构不匹配时展现更强的泛化能力。基于Concatenation的方法中,RT3DSO[20]通过投影,将三维点的强度值与其对应的二维图像特征进行拼接,然后将拼接后的结果输入到卷积层。然而,三维空间中的一些体素可能只包含来自点云分支或视觉分支的特征。为了解决这个问题,Co-Occ[21]引入了几何和语义感知融合模块,该模块可识别包含同时包含点云和像素的体素,并利用KNN选择体素在特定半径内的k个最近邻。OccFusion[22]将图像和点云特征映射到统一体素空间后进行通道拼接,并通过多层3D卷积处理,表现出多模态感知在遮挡区域建模中的明显优势。在基于Summation的方法中,CONet[23]和OccGen[24]利用三维卷积处理多个单模态表示以确定它们的融合权重,随后将这些权重应用于求和点云分支和图像分支特征。在基于Cross Attention的方法中,HyDRa[25]提出了在透视图(PV)和BEV表示空间中整合多模态信息的方法。PV图像特征通过交叉注意力获得BEV点云特征的信息。然后,增强后的PV图像特征被转换为具有深度的BEV视觉表示,该表示与BEV点云特征进行拼接,随后经过Squeeze-and-Excitation层。通过交叉注意力进行融合并得到Occupancy表示。当前最新的融合方法倾向于采用多阶段融合+注意力机制,例如Co-Occ[21]和HyDRa[25]

多模态融合为3D Occupancy感知带来了显著的性能提升,尤其体现在以下几个方面:1)、利用LiDAR进行几何引导,提升了多模态数据语义一致性;2)、弥补摄像头感知盲区和远距信息不足的局限;3)、在复杂天气、光照变化场景中展现更强鲁棒性。但其仍面临以下挑战:1)、模态对齐误差可能引入噪声,尤其在大角度视差区域;2)、模态间信息冗余导致训练不稳定,需设计更具选择性的融合结构;3)、多模态数据采集与标注成本较高,限制了数据规模的扩展。未来工作可聚焦于:1)、构建统一空间语义对齐框架,实现模态无关的体素特征抽取;2)、利用自监督与知识蒸馏策略减少模态依赖,提升迁移性与实用性;3)、结合大模型探索跨模态语义感知(例如图文融合引导)。

4. 4D Occupancy Forecasting

随着自动驾驶从静态环境感知迈向动态场景理解,Occupancy 感知任务也从单帧的 3D 预测进一步扩展为时序建模问题,即 4D Occupancy Forecasting。该任务旨在过去和当前的感知基础上,预测未来时刻空间体素的占据状态。该方向代表了 Occupancy 感知向预测范式过渡的关键阶段,也成为“World Model”构建的重要支撑模块之一。给定过去的   帧以及当前时刻的图像   作为输入,4D occupancy forecasting旨在输出当前occupancy   和未来occupancy  ,其中  分别表示在当前坐标系( )中定义的特定范围的高度、宽度和长度。  的每个体素具有  个连续状态  ,以表示其在未来某时刻的占用情况。

Cam4dOcc[26]首次定义了该任务,构建了用于4D Forecasting的数据集及评价指标,其考虑了两类具有不同运动特征的物体,即一般可移动物体(GMO)和一般静态物体(GSO),并将它们作为被占用体素网格的语义标签,如上图所示。OccSora[27]基于扩散模型对未来体素序列进行建模,引入时序一致性损失,保证预测序列的空间连续性。该方法首次将扩散生成引入Occupancy生成领域,显著提升了预测精度。DynamicCity[28]提出了一个新颖的4D激光雷达生成框架,能够生成大规模、高质量的激光雷达场景,捕捉动态环境的时间演变。其将HexPlane作为紧凑4D表示的VAE模型,通过新颖的投影模块将4D激光雷达特征有效压缩为六个2D特征图,显著提高了HexPlane的拟合质量,并基于DiT的扩散模型用于HexPlane生成,通过填充展开操作将HexPlane的六个特征平面重组为一个方形2D特征图,支持多种条件的引入。有效提升了Occupancy的生成质量。

4D Occupancy Forecasting 正处于从“定性建模”向“可控生成”的关键过渡期。相比传统 3D 感知任务,其研究难点和创新点体现在: 1)、如何有效融合历史信息,并引导生成未来占据状态序列?2)、如何建模目标间因果关系和交互行为对空间状态的影响?3)如何处理长时序帧预测中的不确定性?目前大语言模型、自回归Transformer以及控制条件生成策略是主流建模路径。同时,4D预测也推动了Occupancy从感知任务向“物理世界仿真”的演化,其与World Model的结合也是值得探索的研究方向。

5. 主要研究挑战

尽管当前的3D与4D Occupancy感知取得了显著进展,但在实际应用中仍面临诸多挑战。

1)、 数据成本高昂Occupancy任务需要体素级别的三维语义标签,这种标签的获取依赖于多传感器标定、时序融合以及人工修正,成本极高。例如在OpenOccupancy中,每一帧的标签生成都需要十数帧点云进行融合,并结合人工检验,大幅限制了数据集规模。此外,由于体素标签本身具有三维结构,其标注不仅耗时,还易受对齐误差、遮挡影响等因素干扰,导致标签噪声对模型训练的影响显著。

2)、遮挡区域推理困难无论是3D还是4D Occupancy任务,对不可见区域、遮挡区域的建模仍是一个难题。尤其是在仅依赖图像或稀疏点云时,难以恢复被遮挡物体的空间分布与语义类别。尽管已有方法通过融合几何先验或多模态策略缓解该问题,但其效果在动态场景、稀疏区域或大尺度遮挡下仍不稳定。

3)、多模态融合一致性差多模态融合虽然理论上可以发挥模态互补优势,但实际中常常面临标定误差、模态信息时序不匹配、融合策略选择不当等问题。这些不一致性可能导致较差的预测结果。Xu 等人指出,在多模态体素空间构建过程中,缺乏统一的对齐表示与规范化机制是导致模态融合误差传播的主要原因之一。

4)、模型训练开销与部署难度大当前主流Occupancy建模方法多采用3D卷积、稀疏卷积或多分支Transformer结构,计算与内存开销显著高于2D感知任务。尤其在高分辨率体素空间下,显存与计算资源成为主要瓶颈。这制约了模型在边缘计算设备的实时推理能力。此外,模型对标定误差、时序对齐等条件高度敏感,也加大了实际部署的复杂度与难度。

6)、 动态建模与未来预测不确定性高4D Occupancy Forecasting任务中,未来状态建模的不确定性极高。交通参与者的行为具有多样性和交互性,模型需在复杂场景下合理预测其影响下的空间状态变化。当前扩散模型、Transformer虽然在短时间预测上展现出较好效果,但在长时序下仍易出现模糊预测、不合理移动等问题。

7)、标准化评估体系尚不健全与成熟的感知任务(如目标检测、语义分割等)相比,Occupancy任务的评估体系仍在发展中。现有指标如 IoU、mIoU、ray IoU、occupancy flow consistency 等未形成统一标准,导致不同论文间结果难以横向比较。此外,如何在评估指标中同时衡量几何、语义、运动等多维度性能,依然缺乏系统设计。

6. 未来研究方向

Occupancy感知任务正处于高速发展与多方向演化阶段,未来可能的研究方向如下:

1)、感知任务的统一中间表示Occupancy不仅是感知的结果,更逐渐演化为连接感知、决策与规划任务的统一表示接口。与BEV或稀疏对象表示相比,其具备更强的几何一致性和语义覆盖能力。

2)、 通用世界模型演化Occupancy本质上是一种稠密的世界建模形式,其静态与动态建模能力、对遮挡的空间补全能力,使其具备成为构建World Model的基础。

3)、自监督与无监督训练范式目前大多数Occupancy模型仍依赖高成本的监督信息。可通过自监督、无监督方式解决该问题。

4)、 高效推理与部署Occupancy任务对存储和计算要求较高,未来可从稀疏建模、轻量化(蒸馏、剪枝)等方法进行探索。

7. 总结

Occupancy感知作为连接感知、认知、预测和决策的关键中间层,正逐步成为自动驾驶系统中不可或缺的模块。本文围绕Occupancy感知的研究现状与未来趋势进行了系统梳理,并将该领域划分为3D Semantic Scene Completion、3D Occupancy Prediction(包括LiDAR、Camera与多模态融合三类方法)、4D Occupancy Forecasting等方向。

可以看到当前Occupancy感知已逐步从静态重建走向动态世界建模,从单帧推理迈向长时间序列建模,从单一模态转向多模态融合与自监督预训练,同时也显现出与World Models、大模型等模型的融合趋势。尽管该领域仍面临数据标注高成本、遮挡区域重建困难、融合一致性不佳、部署效率低等一系列挑战,但围绕通用表示学习、高效推理结构、自监督学习范式及开放世界建模策略的发展,已逐步为Occupancy感知的广泛落地奠定基础。

未来,随着传感器硬件能力提升以及多模态预训练大模型的发展,Occupancy可能成为下一代智能体通用世界表示语言,在机器人、增强现实、数字孪生等更广泛场景中发挥重要作用。我们期待Occupancy感知的研究从建模精度、系统集成能力到语义可解释性与跨任务泛化能力全面提升,推动自动驾驶及更广泛智能系统的演进迈入新阶段。

参考文献

[1]. 3D Semantic Scene Completion: A Survey
[2]. Semantic scene completion from a single depth image.
[3]. Sparse single sweep LiDAR point cloud segmentation via learning contextual shape priors from scene completion.
[4]. Semantic scene completion using local deep implicit functions on lidar data.
[5]. Pointocc: Cylindrical tri-perspective view for point-based 3d semantic occupancy prediction.
[6]. Lmscnet: Lightweight multiscale 3d semantic completion.
[7]. S3cnet: A sparse semantic scene completion network for lidar point clouds.
[8]. Fully Sparse 3D Panoptic Occupancy Prediction.
[9]. FastOcc: Accelerating 3D Occupancy Prediction by Fusing the 2D Bird's-Eye View and Perspective View.
[10]. Monoscene: Monocular 3d semantic scene completion.
[11]. Tri-perspective view for vision-based 3d semantic occupancy prediction.
[12]. Voxformer: Sparse voxel transformer for camera-based 3d semantic scene completion.
[13]. Occformer: Dual-path transformer for vision-based 3d semantic occupancy prediction.
[14]. Surroundocc: Multicamera 3d occupancy prediction for autonomous driving.
[15]. Selfocc: Self-supervised vision-based 3d occupancy prediction.
[16]. GaussianFormer: Scene as Gaussians for Vision-Based 3D Semantic Occupancy Prediction.
[17]. GaussianOcc: Fully Self-supervised and Efficient 3D Occupancy Estimation with Gaussian Splatting.
[18]. GaussianFormer-2: Probabilistic Gaussian Superposition for Efficient 3D Occupancy Prediction.
[19]. GaussTR: Foundation Model-Aligned Gaussian Transformer for Self-Supervised 3D Spatial Understanding.
[20]. Real-time 3d semantic occupancy prediction for autonomous vehicles using memory-efficient sparse convolution.
[21]. Co-occ: Coupling explicit feature fusion with volume rendering regularization for multi-modal 3d semantic occupancy prediction.
[22]. Occfusion: A straightforward and effective multi-sensor fusion framework for 3d occupancy prediction.
[23]. Openoccupancy: A large scale benchmark for surrounding semantic occupancy perception.
[24]. Occgen: Generative multi-modal 3d occupancy prediction for autonomous driving.
[25]. Unleashing hydra: Hybrid fusion, depth consistency and radar for unified 3d perception.
[26]. Cam4DOcc: Benchmark for Camera-Only 4D Occupancy Forecasting in Autonomous Driving Applications.
[27]. OccSora: 4D Occupancy Generation Models as World Simulators for Autonomous Driving.
[28]. DynamicCity: Large-Scale 4D Occupancy Generation from Dynamic Scenes.

这里也推荐下自动驾驶之心平台打造的《Occupancy数据生成与模型实战教程》,课程已经结课随到随学!课程大纲如下:

扫码加入学习!

在讨论 `NULL` 的概念及其用途之前,需先明确其定义和常见场景。以下是关于 `NULL` 的详细解析: ### 什么是 NULL? `NULL` 是一种特殊的指针值,在 C 和其他编程语言中通常用于表示“无有效地址”。它是一个宏常量,一般被定义为 `(void*)0` 或简单的整数值 `0`。 #### 在数据库中的含义 在 SQL 中,`NULL` 表示缺失的值或未知的数据状态。例如,当更新某列数据为 `NULL` 时,意味着该字段当前没有任何有效的值[^1]。这可以用来标记某些未填充或不可用的信息。 #### 在程序设计中的应用 对于指针变量而言,将其初始化为 `NULL` 可以防止野指针问题的发生。通过显式赋值为 `NULL`,开发者能够清楚知道此指针尚未指向任何实际对象或者资源已经释放完毕[^2]。 另外需要注意的是,在涉及动态内存分配以及复杂结构体操作过程中,如果希望修改外部传入参数所指向的内容,则可能需要用到双重指针技术;而为了安全起见,在函数内部处理结束后应重新将这些临时使用的单层或多层间接寻址形式下的局部副本置回至初始态即`NULL`状态以防泄漏潜在风险[^3]。 ```c #include <stdio.h> #include <stdlib.h> // Example function demonstrating use of double pointer to change original pointer value safely. void allocateMemory(int **ptr) { static int N = 5; *ptr = (int *)malloc(N * sizeof(int)); if (*ptr != NULL){ printf("Memory allocated successfully.\n"); } } int main() { int* myPtr = NULL; allocateMemory(&myPtr); free(myPtr); myPtr = NULL; return 0; } ``` 上述代码展示了如何利用双指针来更改原始指针的实际存储位置,并且强调了每次完成相应逻辑单元后的清理工作的重要性——即将不再需要访问的对象设为空(`NULL`)从而避免悬垂引用等问题出现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值