linux测试软件(linux 测试软件)-冯金伟博客园

Linux能应用在哪些领域呢?

锂电池行业现状

1

锂电池

锂电池是指以嵌锂化合物为正负极材料的二次电池。在充放电过程中,锂离子在两个电极间往返脱嵌和嵌入。相对于传统铅酸电池和镍铬电池等,锂电池具有能量密度高、循环寿命长、充放电性能好、使用电压高、无记忆效应、污染较小和安全性高等优势。锂电池相当于传统燃油车的内燃机,对于意在新能源行业领域弯道超车赶超传统燃油车发达国家欧美日韩等国的中国来说,发展锂电池行业早已上升为国家战略。

锂电池占新能源汽车成本的40%以上,是最大的成本构成。锂电池的核心部分主要由正极材料、负极材料、电解液和隔膜四大关键材料组成。根据日本IIT的研究报告,正极材料、负极材料、电解液、隔膜分别占锂离子电池材料成本的比例约为30%、10%、17%、25%。(图一)

图1 锂电池材料成本占比

2

锂电池整体产业链的上下游

锂电池整体产业链较长,覆盖的行业较广。原材料主要包括锂、钴、镍、锰、铝、氟、石墨等矿产资源,聚乙烯、聚丙烯、沥青、尼龙等石油、煤化工行业资源;上游行业涵盖正极材料、负极材料、电解液、隔膜、铝箔、铜箔和锂电池生产设备制造等;中游行业包括锂电池生产企业,主要进行圆柱、软包、金属壳电池的生产和集成PACK;下游行业为锂电池应用领域,如数码电子产品、新能源汽车、动力电池回收、储能设备等行业。(图2)

图2 锂电池产业链

锂电池分类

1

以正极材料分类

以正极材料分类,锂电池主要可以分为:钴酸锂、锰酸锂、磷酸铁锂、钛酸锂和三元材料等。

钴酸锂

首个成功商业化的锂离子电池正极材料。由于存在钴资源相对贫乏、价格较高、对环境有毒性影响等缺点,再加上该材料安全性能较差、容量相对较低,大大限制了其应用和长远的发展。目前钴酸锂材料电池主要应用于数码产品的电池中。

锰酸锂

主要为尖晶石型锰酸锂。相对钴酸锂,具有资源丰富、价格便宜、对环境污染小且安全性能优良等特点。但尖晶石的结构很难保持完整性,循环性较差,高温循环中锰在电解液中的溶解和Jahn-Teller效应(非线性分子的电子云在某些情形下发生的构型形变)导致材料的容量衰减严重。锰酸锂的优势在于成本低,劣势是比能量已达极限,因此只能用于特定应用领域的专用车型。

磷酸铁锂

原材料丰富、价格相比其他材料来比较低廉、对环境友好,加上较好的循环性能和高安全性,使得其广泛应用于客车领域。但是磷酸铁锂材料的导电性较差,振实密度较低,导致体积能量密度较低,限制了其进一步的应用。

钛酸锂

钛酸锂是一个优缺点都很明显的材料,而且可以做正极也可以做负极,当其作为正极材料时能量密度低的缺点凸显,作为负极材料时其高寿命的优点却无法得到其他短寿命的正极材料充分利用。钛酸锂优势在于能够实现快充(5min充满)、高寿命、安全性高、工作温度范围宽,但其低能量密度和容易胀气的短板在没有技术突破的前提下,只适合应用于续航里程相对不敏感的公交车、客车等领域。

三元材料

受钴酸锂的金属元素掺杂改性的启发,三元材料得到快速发展。三元材料结合了钴酸锂、镍酸锂和锰酸锂(铝酸锂)的优点,形成了三元共荣体,可以充分发挥三个组元的作用。能量密度高是三元材料电池相较其他正极材料电池最为突出的优点,但安全性相对较低是其发展受到一定程度限制的最大原因。三元材料主要分为镍钴锰(NCM)和镍钴铝(NCA)两大类。其中镍(Ni)提供容量,含量越高电池的能量密度越大,钴(Co)贡献部分容量的同时稳定结构,锰(Mn)/铝(Al)主要用来稳定结构。三者协同作用,共同发挥出三元材料高能量密度、较低成本等优点。

传统“3C”类产品锂电池主要是钴酸锂材料,由于电脑、手机等市场已接近饱和,未来主要看智能手机的创新和期待智能穿戴产品的爆发,因此当前“3C”领域对锂电池需求将保持一个稳定的低增速。

近年来随着我国新能源汽车政策的实施以及新能源汽车生产量的迅速扩大,动力锂电池迎来了爆发,直接拉动相对应的磷酸铁锂和三元正极材料电池的出货量。

2017年以来,三元电池备受热捧。据统计,2017年前三季度中国动力锂电池产量31GWh,其中镍钴锰三元材料(NCM)占比49%,磷酸铁锂占比40%,锰酸锂占比8%。与此同时,根据国家规划,2020年要实现动力电池350Wh/kg的能量密度,2025年目标为400Wh/kg,2030年目标为500Wh/kg。对动力锂电池高能量密度的倾斜,使得许多企业及市场将目光转向三元材料锂电池,而磷酸铁锂电池似乎有些冷落。

据统计,镍钴锰三元材料(NCM)目前有333、523、622、811四种型号(数字代表镍钴锰元素的比例,如NCM523代表镍:钴:锰比例为5:2:3),作为主要活性元素的镍含量越高,电池的容量优势越显著。目前,三元电池企业主要应用的是NCM333与NCM523,NCM622已经进入部分企业的供应链体系,NCM811正处于研发阶段。

2

以封装材料分类

方形硬壳(铝壳/钢壳)电池

方形硬壳电池壳体多为铝合金、不锈钢等材料,内部电芯采用卷绕或叠片工艺,对电芯的保护作用优于软包电池(铝塑膜电池),电芯安全性相对圆柱型电池也有了较大改善。

方形铝壳动力锂电池在钢壳基础上发展而来,与钢壳相比,轻重量和安全性以及由此而来的性能优点,使铝壳成为方形硬壳动力锂电池外壳的主流。由于方形硬壳动力锂电池可以根据产品的尺寸进行定制化生产,所以市场上有成千上万种型号,而正因为型号太多,工艺很难统一。

软包电池(铝塑膜电池)

软包锂电池所用的关键材料,如正极材料、负极材料、隔膜、电解液等与传统的钢壳、铝壳锂电池之间区别不大,最大的不同之处在于软包装材料(铝塑复合膜),这是软包锂电池中最关键、技术难度最高的材料。软包锂电池是对采用铝塑膜等软包装锂电池的简称,主要是为了区别于传统的采用铝金属等硬质壳体包装的锂电池。软包电池的安全性更好,重量更轻,容量更大。软包电池的不足之处是一致性较差,成本较高,容易发生漏液。

圆柱电池

圆柱型锂电池有诸多型号,比如18650、21700等。圆柱形锂电池生产工艺成熟,PACK成本较低,电池产品良率以及电池组的一致性较高。由于电池组散热面积大,其散热性能优于方型电池。圆柱形电池便于多种形态组合,适用于电动车空间设计的充分布局。但圆柱形电池一般采用钢壳或铝壳封装,比较重,比能量相对较低。随着电动汽车市场的进一步扩大和对续航里程要求的不断提升,整车企业对动力电池在能量密度、制造成本、循环寿命和产品附加属性等方面都提出了更高的要求。在原材料领域尚未获得巨大突破的前提下,适当增大圆柱电池的体积以获得更多的电池容量,便成为一种可探索的方向。

行业及值得关注的方向

尽管新能源行业面临着补贴退坡20%的危机感,但是目前新能源汽车正处于全球化发展阶段,随着多国制定禁售燃油车时间表,人们可以明显感受到新能源汽车发展在持续加速。2017年9月9日,工信部副部长辛国斌指出,已启动停止销售传统能源汽车时间表制定。2017年9月28日,工信部发布了《乘用车企业平均燃料消耗与新能源汽车积分并行管理办法》,确定了我国新能源汽车发展目标。国家政策依然在促进新能源汽车的推广,那么作为新能源汽车核心部件的锂电池情况又是如何呢?

2017年前10个月, 锂电池总装机量18.1GWh(非产量),同比增长31.43%。随着未来新能源汽车的进一步普及,锂电池需求将保持增长。据中商产业研究院发布的《2017-2022年中国动力电池市场调研及投资潜力报告》预测,到2020年中国动力电池产量将超过140GWh。(图3)

图3 2016-2020年中国动力电池产量及增速预测

看数据整个行业依然前景美好,然而在同时面对下游端新能源汽车企业的降低成本要求和上游原材料端供货紧缺价格猛增的双重压力下,锂电池生产厂商的利润下降也就不可避免。随着各个电池生产厂商纷纷进行厂房生产线的升级改造和生产厂房的扩建,锂电池生产厂商将会面临一个严峻的问题:低端电池产能过剩,优质电池供应不足。由于正负极材料、隔膜、电解液等配套材料在过去一两年中也在积极扩产,锂电池产能过剩还将通过传导使得锂电池产业链各环节均出现不同程度的供需失衡。那么,整个锂电池产业链还有哪些环节可以关注呢?

1

钴、镍原材料端

2017年可以毫不夸张的称为“钴稀之年”,钴价的快速上涨主要是长期、中期、短期三种因素叠加造成。从长期因素分析,随着三元锂电材料受重视程度的提升和政策的支持,可以肯定今后三元锂电池为新能源电动车的主要电池类型,对其需求将出现大的增长。从中期或较长时期因素来分析,不仅是中国,全球的钴资源、特别是原生钴资源的供需矛盾未来都较为突出,供不应求的状况在全球范围内正成为一个共识。从短期因素来看,全球经济逐步复苏、美元加息等因素刺激大宗商品、有色金属整体回升,投机性资金看好钴金属,不惜重金投入。(图4)

图4 钴价格涨跌图

钴市上扬与三元电池抢占磷酸铁锂电池市场息息相关,然而乐观的背后需要注意的是“水能载舟亦能覆舟”。受成本、性能驱动,三元材料正在纷纷向着高镍化、低钴化发展。(图5)

图5 镍价格涨跌图

“妖镍”过山车一般的价格波动让人难以揣度,目前新能源汽车动力电池对于镍的需求量占镍市场的份额并不高,但钴价高居不下,三元材料高镍低钴化已成趋势,高镍三元材料在能量密度上也有着更大的优势。目前,三元材料NCM622还未普及,而众多动力锂电池正极材料生产企业大力研发的NCM811可能还需要一些时间。当高镍三元材料逐渐成为市场主流的时候,镍的价格可能会如今年的钴价一般持续上涨。

2

上游材料端

锂电池及其上游材料中的正极材料、负极材料、电解液和隔膜,2015 年我国的产量占全球总产量的比重分别为49.11%、56.76%、67.89%、57.44%、38.96%,正极、负极和电解液三种材料基本能够满足国内需求而且大量出口海外。2016 年隔膜材料大规模扩产后,全年产量达到10.84亿平,干法隔膜的产能已经得到释放,湿法隔膜预计2018年将逐步完成进口替代。2016 年国内铝塑膜需求量为9500万㎡,而国内铝塑膜产量为494万㎡,目前国产化率尚不足8%。

铝塑膜为软包锂电池特有的外层封装材料,通常由三层复合组成,即外阻层、阻透层和热封层。塑膜成本占软包电池成本的15%-20%,而国内外铝塑膜的价格差距约在20%~30%。随着补贴下降压力传导至中游,锂电池厂商面临巨大成本压力,迫切需要降低锂电池原材料成本,因此铝塑膜实现进口替代、国产化需求日益凸显。随着全球软包电池的渗透率提高,铝塑膜的总需求也会大幅增长。(图6)

图6 软包锂电池成本占比

3

中游动力锂电池相关生产

技术改造公司

各大锂电池厂商都在扩建规模和提升产能,必然会带来旧设备的升级利用。国内动力电池生产线自动化率与国外相差较大,据统计数据,目前国内一线、二线厂商的自动化率分别为60%和30%,较国外先进企业85%的自动化率仍有提升空间。而技术改造公司可以适时进入锂电池行业。由于动力锂电池生产绝大部分工序都有着较高的技术壁垒,比如合浆机、涂布机、辊压机、模切机、卷绕机等专业性强,因此技术改造公司可以从技术壁垒相对较低的自动化装配线介入。

自动化装配线的特点主要负责的是成熟设备(如:绝缘电阻测试仪、超声波焊接机、CCD相机等)的集成,电芯单体的移动、翻转、装配、检测等,对于服务于车企、电子元器件等成熟行业的技术改造公司来说,装配线所需核心的元器件,如伺服电机、传感器、CCD相机、气缸、夹爪设计、夹具设计、机器人集成、传输带连接、PLC编程控制等,都属于技术改造公司最熟悉的应用领域。而技术改造公司需要结合锂电池生产厂的工艺需求和各个工序的装配精度、检测精度、生产节拍等细节,设计出满足其要求的设备升级改造方案。

机器人行业

随着机器人在智能制造行业的应用急速扩大,同时世界四大机器人家族(瑞士ABB、日本发那科公司、日本安川电机、德国库卡机器人)的供货不足和价格的提升,国产机器人替代进口是一大趋势。锂电池生产制造厂商由于频繁地产品换型和产能的大幅提升压力,智能化、柔性化、高效率的机器人逐渐成为其主要选择。在新能源行业补贴退坡20%的国家政策状况下,下游新能源汽车生产厂商对动力锂电池生产厂商提出降成本需求,同时原材料端价格的提升,两头的压力都迫使动力锂电池生产厂商尽可能降低成本。因此,国产机器人在动力锂电池产业链中的市场占有率将会逐步提升。

计算机视觉的应用

同机器人行业一样,计算机视觉应用行业同样属于一个应用面非常广的行业,其主要应用行业集中在军事、医疗、工业生产和人工智能领域。其在工业生产行业主要应用为无损尺寸检测和缺陷检测。随着动力锂电池行业越来越规范,其生产各工序品控不断提升,传统人工检测无论从精度和速度上都已经无法跟上产能的提升。而尺寸检测、缺陷检测几乎遍布整个动力锂电池生产的每一道工序。

根据不同的工艺需求,其所需的算法逻辑、CCD相机选型、光源选择等各个细节都不相同,这些需求都是相对较为特殊和独特的需求,而康耐视、基恩士等行业巨头的配套算法多是基于普遍性的检测,而专项的检测要求,一定会使康耐视、基恩士等行业巨头研发团队的产生高额费用。因此,国内计算机视觉的应用算法公司就有了进入动力电池行业的机会。

4

下游动力锂电池的回收、储能设备

动力电池回收

12月1日,《车用动力电池回收利用拆解规范》正式开始实施。这是由工信部提出的国内首个关于动力电池回收利用的国家标准,明确指出回收拆解企业应具有相关资质,进一步保证了动力电池回收利用的安全、环保、高效。《拆解规范》对废旧动力电池回收利用的安全性、作业程序、存储和管理等方面都进行了严格规定,在一定程度上规范了我国车用动力电池的回收利用及拆解、专业性技术及动力电池回收体系,有利于行业发展。

据统计,国内动力电池将在2020年前后进入报废高峰,累计报废量将达到12-17万吨,而2016年实际拆解回收不足1万吨。

动力电池中正极材料、电解质处理不当对环境污染巨大,且我国钴等稀缺金属对外依赖严重。据有关机构测算,2018年从废旧动力锂电池中回收钴、镍、锰、锂、铁和铝等金属所创造的回收市场规模将达到53.23亿元,2020年达到101亿元,2023年将达到250亿元。所以,动力电池回收将成为国内新能源汽车发展的关键。明年2月1日起,《车用动力电池回收利用余能检测》等3项动力电池新国标也将正式实施。随着较为完善的国标体系的建立,动力电池回收和梯次利用的无序状态将有望改善。

梯次利用是指将退役的动力电池,运用在储能、分布式光伏发电、低速电动车等领域,发挥再利用价值。而当电池无法进行梯次利用时,则需要进行拆解回收。

清华大学核能与新能源技术研究院研究员徐盛明认为,废旧动力电池资源回收和梯次利用市场空间巨大。“目前处在技术积累和研发阶段。未来回收技术和梯次利用技术创新是企业竞争力的重要体现。”

因此,专业回收处理动力电池的企业将会在未来的几年迎来一个发展时期。

储能设备

随着未来锂电池价格降低,锂电池梯次利用越来越规范,储能锂电池市场的经济性将逐步凸显。据预测到2020年,我国储能锂电池需求有望达到16.64GWh,2017-2020 年市场增速有望维持在 40%以上,如果储能市场能够随电池降价而实现快速成长,则有望带来增量设备需求。(图7)

图7 储能锂电池需求预测

目前,中国锂电储能市场尚未出现龙头企业,各大企业均处于布局阶段,产值均在5亿元以下。由于国内储能政策不明朗,锂电储能电池价格较贵,且还存在一定的技术瓶颈。

中商产业研究院《2017-2022年中国锂电池市场调研及预测报告》显示,2016年中国储能锂电池市场规模约52亿元。其中,储能电池市场占比最大的是比亚迪,为14%;其次是富朗特及圣阳股份,均为7%。(图8)

图8 2016年中国储能锂电池市场竞争格局图

潜在颠覆动力锂电池的五大电池

1

金属空气电池

金属空气电池理论上正极的容量密度无限大,以空气中的氧气为正极,以铝、镁、锌、锂等活泼的金属为负极材料,可以获得超高能量密度。但空气电池的研发成本很大,其所遇到的难题也一直未能解决。

2

固态电池

液态锂离子电池能量密度极限在350Wh/kg,用固态电解质替代锂离子电池中的电解液+隔膜之后的固态电池,适配更高能量密度的正负极材料,能量密度能够达到500-600Wh/kg,被公认为下一代锂离子电池技术。丰田、宝马、菲斯克、博洛雷、松下、三星、三菱、现代、戴森、宁德时代等企业,都在加紧布局固态电池的储备研发。

3

锂硫电池

单质硫的理论比容量和比能量可高达1675mAh/g和2567 Wh/kg,硫还具有价格低廉、环境友好等优点,有望成为下一代理想的正极材料。在同等质量下,锂硫电池可拥有传统锂离子电池6-7倍的电量,但目前使用寿命还达不到预期。未来锂硫电池的使用循环寿命达到与锂离子电池相当之后,将成为理想的替代产品。

4

燃料电池

燃料电池是一种将燃料与氧化剂的化学能通过电化学反应直接转换成电能的发电装置。常用的燃料除氢气外还有甲醇、联氨、烃类及一氧化碳等。氢燃料电池成为与锂电池相抗衡的一大技术路线,具有零排放、长续航、加氢时间短等特性,但是也面临氢气制造、存储与安全性问题,以及催化剂金属铂的稀有问题。

5

石墨烯电池

石墨烯被誉为材料之王,具有极高的导热性、导电性、比表面积等优良特性,使其成为储能、电子、光电器件的首选材料,应用在电池领域,其对于快充、耐高温等特性的提升是非常显著的。

石墨烯虽然成为多方角逐的焦点,各国政府和产业也纷纷进行布局,但受限于成本等问题,石墨烯应用方面还存在诸多问题,目前市场应用主要是以添加剂和辅助材料来使用,难以发挥其真正实力,因此也被称为“工业味精”。例如在锂电池中加入石墨烯材料,或者作为导电剂提高快充性能的电池被称作“石墨烯基电池”,而不是真正的“石墨烯电池”。

锂电池行业投资建议

由于前几年国家政策的扶持,锂电池整体行业处于风口,导致大量资本介入,从而搅乱了整个市场。从2016年下半年开始,锂电池行业在国家政策的指导下,明显加快了行业的整合速度。在新的电池出现替代锂电池前,可以对以下几点持续关注:

在高镍正极材料逐渐抢占市场时,镍材料的价格提升;

国内有技术优势的铝塑膜生产厂家;

智能制造技术改造公司从锂电池装配线升级改造介入锂电池行业;

国产机器人制造厂家逐步介入锂电池生产厂家的智能化、柔性化、高效率产线升级;

锂电池行业越来越规范,产品质量控制越来越严格时,成熟的计算机视觉团队能够借机发展壮大;

2020年左右,大量动力锂电池报废时,电池回收企业和储能设备企业的发展机会将会到来。

1 赞

评论

分享

举报

linux属于软件测试吗?

Linux不属于软件测试

因为它是一款操作系统也就类似于我们在平常的工作里面使用的WINDOWS操作系统,只不过是我很少有人用到这款操作系统的,但是在IT行业的开发里面这个是一定要有的很多的大型的服务器都是部署在这款操作系统上面

Linux安全软件有吗?

有。

护卫神·入侵防护系统,防服务器被入侵的安全软件,有木马查杀、远程防护、安全检测、用户防护、SQL注入防护、网站加固等模块。

护卫神·网站安全系统,防止网站被入侵的安全软件,通过安全策略和后台密码锁,在不修改源代码的情况下解决网站被入侵、挂马、篡改、劫持等行为,免疫所有网页木马。

如何在linux下检测内存泄漏?

要想检测内存泄漏,就必须对程序中的内存分配和释放情况进行记录,所能够采取的办法就是重载所有形式的operator new 和 operator delete,截获 new operator 和 delete operator 执行过程中的内存操作信息。下面列出的就是重载形式

void* operator new( size_t nSize, char* pszFileName, int nLineNum )

void* operator new( size_t nSize, char* pszFileName, int nLineNum )

void operator delete( void *ptr )

void operator delete( void *ptr )

我们为 operator new 定义了一个新的版本,除了必须的 size_t nSize 参数外,还增加了文件名和行号,这里的文件名和行号就是这次 new operator 操作符被调用时所在的文件名和行号,这个信息将在发现内存泄漏时输出,以帮助用户定位泄漏具体位置。对于 operator delete,因为无法为之定义新的版本,我们直接覆盖了全局的 operator delete 的两个版本。

在重载的 operator new 函数版本中,我们将调用全局的 operator new 的相应的版本并将相应的 size_t 参数传入,而后,我们将全局 operator new 返回的指针值以及该次分配所在的文件名和行号信息记录下来,这里所采用的数据结构是一个 STL 的 map,以指针值为 key 值。当 operator delete 被调用时,如果调用方式正确的话(调用方式不正确的情况将在后面详细描述),我们就能以传入的指针值在 map 中找到相应的数据项并将之删除,而后调用 free 将指针所指向的内存块释放。当程序退出的时候,map 中的剩余的数据项就是我们企图检测的内存泄漏信息--已经在堆上分配但是尚未释放的分配信息。

以上就是内存检测实现的基本原理,现在还有两个基本问题没有解决:

1) 如何取得内存分配代码所在的文件名和行号,并让 new operator 将之传递给我们重载的 operator new。

2) 我们何时创建用于存储内存数据的 map 数据结构,如何管理,何时打印内存泄漏信息。

先解决问题1。首先我们可以利用 C 的预编译宏 __FILE__ 和 __LINE__,这两个宏将在编译时在指定位置展开为该文件的文件名和该行的行号。而后我们需要将缺省的全局 new operator 替换为我们自定义的能够传入文件名和行号的版本,我们在子系统头文件 MemRecord.h 中定义:

#define DEBUG_NEW new(__FILE__, __LINE__ )

而后在所有需要使用内存检测的客户程序的所有的 cpp 文件的开头加入

#include “MemRecord.h”

#define new DEBUG_NEW

就可以将客户源文件中的对于全局缺省的 new operator 的调用替换为 new (__FILE__,__LINE__) 调用,而该形式的new operator将调用我们的operator new (size_t nSize, char* pszFileName, int nLineNum),其中 nSize 是由 new operator 计算并传入的,而 new 调用点的文件名和行号是由我们自定义版本的 new operator 传入的。我们建议在所有用户自己的源代码文件中都加入上述宏,如果有的文件中使用内存检测子系统而有的没有,则子系统将可能因无法监控整个系统而输出一些泄漏警告。

再说第二个问题。我们用于管理客户信息的这个 map 必须在客户程序第一次调用 new operator 或者 delete operator 之前被创建,而且在最后一个 new operator 和 delete operator 调用之后进行泄漏信息的打印,也就是说它需要先于客户程序而出生,而在客户程序退出之后进行分析。能够包容客户程序生命周期的确有一人–全局对象(appMemory)。我们可以设计一个类来封装这个 map 以及这对它的插入删除操作,然后构造这个类的一个全局对象(appMemory),在全局对象(appMemory)的构造函数中创建并初始化这个数据结构,而在其析构函数中对数据结构中剩余数据进行分析和输出。Operator new 中将调用这个全局对象(appMemory)的 insert 接口将指针、文件名、行号、内存块大小等信息以指针值为 key 记录到 map 中,在 operator delete 中调用 erase 接口将对应指针值的 map 中的数据项删除,注意不要忘了对 map 的访问需要进行互斥同步,因为同一时间可能会有多个线程进行堆上的内存操作。

好啦,内存检测的基本功能已经具备了。但是不要忘了,我们为了检测内存泄漏,在全局的 operator new 增加了一层间接性,同时为了保证对数据结构的安全访问增加了互斥,这些都会降低程序运行的效率。因此我们需要让用户能够方便的 enable 和 disable 这个内存检测功能,毕竟内存泄漏的检测应该在程序的调试和测试阶段完成。我们可以使用条件编译的特性,在用户被检测文件中使用如下宏定义:

#include “MemRecord.h”

#if defined( MEM_DEBUG )

#define new DEBUG_NEW

#endif

当用户需要使用内存检测时,可以使用如下命令对被检测文件进行编译

g++ -c -DMEM_DEBUG xxxxxx.cpp

就可以 enable 内存检测功能,而用户程序正式发布时,可以去掉 -DMEM_DEBUG 编译开关来 disable 内存检测功能,消除内存检测带来的效率影响。