Warning C4150的原因和解决办法

github二维码开源库zqxing、zint在Qt上的调用 zbar官网 http://zbar.sourceforge.net/ zxing git源码 https://github.com/ftylitak/qzxing zint git源码 https://github.com/zint/zint zint学习csdn博客 https://blog.youkuaiyun.com/hhhuang1991/article/details/83378108 待续… 阅读详情

今天有同事碰到了这个Warning:

Warning C4150

Deletion of pointer to incomplete type 'type'; no destructor called

下面的代码会导致这个问题:

class A;

 

A *pA = new A();

delete pA;                  // Warning C4150

 

这个Warning字面的意思是由于类型是不完全类型(Incomplete Type),因此destructor不会被调用。

其原因是由于前面使用前置声明来声明class A,此时class A并没有完整的定义,编译器只是把A加入到符号表并标记A为一个class,编译器并不知道更多的信息,比如A的大小,有何成员函数等等。在以一般情况下,如果我们只用到A的指针,在特定平台下A的指针大小固定,因此编译器不会报任何错误。然而,在调用delete来删除pA的时候,编译器可以知道pA所指的内存大小,因为内存分配器在内存块中保存了大小信息,可以正确释放A所占据的内存。但是,由于A是Incomplete Type,编译器无法知道A所对应的析构函数(destructor),因此不会调用A的析构函数。

解决方法很简单,#include A所在的头文件即可,如果忘记了#include,则会出现此Warning。

当然了,还有一种情况是你已经在某个地方调用过A的析构函数了(这种情况不太常见),在这里只需要释放内存即可,所以可以这么写:

class A;

 

A *pA = new A();

delete (void *)pA;

手把手教你使用YOLOv11模型,训练自己数据集,百分百成功(无废话) YOLOV11百分百成功训练自己的数据集并进行图像、视频流脚本预测 阅读详情

相关推荐

光纤接口类型与应用场景全解析

本文全面解析了光纤接口的类型与应用场景,详细介绍了SC、LC、FC和ST等主流光纤接口的特点及适用环境。从数据中心的高密度布线到工业环境的极端条件,提供了专业的接口选型指南和实战经验,帮助读者根据具体需求选择最合适的光纤接口方案。

weixin_29289821的博客 411

warning C4150: 删除指向不完整“CXxx”类型的指针;没有调用析构函数

出现原因:class CXxx;这种方式向前申明,其后面的类只能申明其指针,前向申明以后的类无法看到其类实体。所以,delete的时候,CXxx的析构函数对后面的类是透明不可见的,除非使用头文件包含。...

dragoo1的专栏 1505

数据采集卡架构与PCIe优化设计详解

数据采集卡(DAQ)作为工业自动化中的关键设备,其核心在于模数转换(ADC)和数字信号处理技术。现代系统普遍采用PCIe总线架构,通过DMA传输和时钟同步技术实现高速数据采集。在信号调理环节,可编程增益放大器(PGA)和抗混叠滤波器确保信号质量;而Σ-Δ型ADC则提供高达24位的分辨率。实际应用中,从电力监测到机床振动分析,数据采集卡需要结合具体场景优化配置。通过合理的PCB布局和EMI防护设计,可以有效提升系统在工业环境中的可靠性。

weixin_29168675的博客 912

[C++]error C4150: deletion of pointer to incomplete type ; no destructor called

  error C4150: deletion of pointer to incomplete type 'XXXXX'; no destructor called   问题原因可能是下面情况之一: 1,成员变量所在的头文件没有引用;   2,A类和B类所属同一命名空间,且A有一个类型为B的成员变量,想通过声明class b的方式不在A的头文件中引用B的头文件,但是却把声明放在了...

玄冬Wong 492

三维模型转变为点云模型的好工具——CloudCompare使用小记

普通三维模型能够直观地展示物体的三维全貌,但是在一些场合需要将三维模型变为相应的点云模型进行展示,而使用激光雷达等传感器采集到的点云信息往往只能反应模型表面的情况,或是使用PCL库中的可执行文件进行转换,这两种操作较为麻烦。笔者最近就遇到了这样一个情况,找到了一个名叫CloudCompare(CC)的软件,能够支持将多种文件格式的三维模型转变为点云模型。以下将本人在使用过程中所使用到的一些操作简记下来供朋友们和将来的自己参考。 一、下载 CloudCompare是一款免费软件,其可以在CloudComp

hdlwyt的博客 2万+

数据集分享 | IWR1642呼吸心跳数据集

雷达开源数据库 数据集

【调皮连续波】雷达技术领域知识博主 3205

warning C4150: deletion of pointer to incomplete type 'xxx'; no destructor called 的解决办法

下面的代码会导致这个问题: class XX;   XX *pX = new XX(); delete pX;                  // Warning C4150   以上的代码会导致这个C4150警告, 原因就是你的类声明不完整, 编译器只是把A加入到符号表并标记A为一个class,编译器并不知道类的大小,成员函数等其他信息。   如果只是声明指针, 在特定平台下

?! 1293

小白跑WRF第三天,安装三方依赖库

小白跑WRF第三天,安装三方依赖库各类安装包的准备 各类安装包的准备 官网教程:https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php 根据官网教程需要的安装包有以下几个 系统环境 用途 zlib-1.2.7 zlib是提供数据压缩用的函式库。 netcdf-4.1.3 读nc文件的。 mpich-3.0.4 用于并行运算的工具。 libpng-1.2.50 libpng是一款C语言编写的比较底层

weixin_42372313的博客 1万+

Compiler Warning C4150: deletion of pointer to incomplete type 'XXX'; no destructor called

Look at the following codes: // C4150.cpp // compile with: /W2 class IncClass; void NoDestruct( IncClass* pIncClass ) { delete pIncClass; } // C4150, define class to resolve Reason: The compil

PunCha (PCH) 1147

数据预处理的分箱操作

数据分箱 介绍 我们在建立模型前,一般需要对特征变量进行离散化,特征离散化后,模型会更稳定,降低模型过拟合的风险。尤其是采用 logsitic 建立评分卡模型时,必须对连续变量进行离散化。而特征离散化处理通常采用的就是分箱法,数据分箱(也称为离散分箱或分段)是一种数据预处理技术,用于减少次要观察误差的影响,提高泛化性。 数据分箱又分为有监督分箱和无监督分箱,是否使用标签进行离散化(分箱)决定了有监督还是无监督的离散化方法。 知识点 无监督分箱 split 分箱 merge 分箱 无监督分箱 这里为了

随笔记 5334

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

Warning C4150 Deletion of pointer to incomplete type,no destructor called

头文件使用class A;声明,.cpp文件中未包含头文件。 在.cpp文件中添加头文件即可 转载于:https://www.cnblogs.com/huangsitao1024/p/10300384.html

weixin_30319097的博客 193

Q3D提取PCB走线RLCG参数

介绍一种提取PCB走线寄生电容和寄生电感的方法

sinat_15150363的博客 2920

Warning C4150 的解决方法

今天编译时,出现一个warning warning C4150: deletion of pointer to incomplete type CnPinchParams; no destructor called原因是使用了公司自己的智能指针,但是好像boost::shared_ptr就没有这个警告。下面是分析例子,原因我也知道了。下面的代码会导致这个问题:

jiaoshuchun的专栏 1589

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

warning C4150: 删除指向不完整“CBasexxx”类型的指针;没有调用析构函数

warning C4150 删除指向不完整“”类型的指针;没有调用析构函数,内存泄露

zzw315的专栏 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[C++]Warning C4150小议

一、体现 0.代码: class A; class B { public: //构造函数在其它文件中 B(void); ~B(void) { //如果A中还有堆开辟,那么会有内存泄漏 delete m_pA; } A* m_pA; }; 1.警告: warning C4150: 删除指向不完整“Base”类型的指针;没有调用析构函数

wxqian25的专栏 1136

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

warning 删除指向不完整指针

warning C4150: 删除指向不完整“xxx”类型的指针;没有调用析构函数 原因是只有class xxx声明语句 ,没有包含#include "xxx.h"语句。

sinat_31964903的博客 476

warning C4150: 删除指向不完整“CClient”类型的指针;没有调用析构函数

今天调试代码发现了一个很怪异的现象,delete 指针竟然没有调用析构函数,具体代码如下 class CClient; class CClientManager { private: CClientManager(void); ~CClientManager(void); public: static CClientManager& GetInstance(); public: v

xbgprogrammer的专栏 4706

warning C4150: 删除指向不完整“XXX”类型的指针;没有调用析构函数

warning C4150:

Legend(谭海燕)的专栏 7451

OGG 19c Bug 35446910 报错 Mapping error 错误解决办法

作者 | JiekeXu来源 |公众号 JiekeXu DBA之路(ID: JiekeXu_IT)如需转载请联系授权 |(个人微信 ID:JiekeXu_DBA)大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 OGG 19c Bug 35446910 报错 Mapping error 错误解决办法,欢迎点击上方蓝字“JiekeXu DBA之路”关注我的公众号,标星或置顶...

JiekeXu的博客 1748

处理vs2005警告错误

对das 2.0项目的所有工程全面检查编译警告错误,处理记录汇集成本文. 此前的项目没有有意识地对警告进行处理,因此编译时经常报出大量的警告. 除了不清爽的感觉外,无视警告可能漏掉了对改进程序有价值的线索。 本文列举了所遇到的几乎全部的警告. 对这些警告的处理方式可以应用到其它项目,也包括das从中继承过来的. C4018 warning C4018: ' 统一变量类型声

wherwh的专栏 4337

SSH连接时出现Host key verification failed的原因及解决方法

一、问题描述 [kiosk@foundation58 images]$ ssh root@172.25.58.2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@...

yunyuzhu的博客 2152

win10模拟android,WIN10开安卓模拟器就蓝屏

想在电脑上玩安卓游戏就下载了个安卓模拟器,但只要启动模拟器电脑就会蓝屏,重新卸载安装其他的模拟器也都是相同问题。下载windbg查看了dump文件,现贴上来给大神参考Microsoft (R) Windows Debugger Version 10.0.17134.81 X86Copyright (c) Microsoft Corporation. All rights reserved.Load...

weixin_39864373的博客 778
上一篇: 转贴:Apple操作系统的历史
下一篇: 转贴:Objective-C Tutorial
ATField
博客等级 码龄25年 673粉丝 119原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值