首页 > 文章中心 > 管理者的职责

管理者的职责

前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇管理者的职责范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。

管理者的职责

管理者的职责范文第1篇

你要是管理者的话,我给你一个选择。某项工作,你必须要得罪一个人的话,你愿意得罪上司、下属、还是同僚?如果只能让一个人不痛快的话,你选择让谁不痛快?很多管理者在工作中,非常喜欢和下属混,号称和群众打得火热,深入到群众中去。甚至有某营销总监和区域经理说:“兄弟们,我们只有把商抓在手上了,我们只有深入到终端了,我们的力量才强大,我们才有资格和老板谈。我们在老板的眼里是不可替代的,他会有所顾忌,无论我们在不在这个公司干,我们都将掌握主动权。所以从现在开始,我们开始我们的掌控渠道战略,我们要为自己好好干。”

其实管理者是不是要和下属混在一起,不同文化的企业,有不同的观点,不同的环境下,有不同的观点。比如在人人是企业主人的国企,管理者就是要和下属混在一起,否则群众不满意,管理者通不过民主评议,那是要下台的。而外企的管理者,相对来说就有管理者的样子,很多外企的管理者,有专门的食堂,专门的电梯,专门的办公楼层等,用来体现管理者的威严。他们的哲学是,我是管理者,我是代表公司来做管理工作的,我和员工是工作关系,没必要和员工混在一起,我不是来交朋友的,我要是需要朋友的话,我会买一条狗。

再比如一个销售类公司,在遥远新疆的喀什有个办事处,办事处里一个主任,和三个销售代表。你说这个办事处的管理是什么状态,他们是天高皇帝远呀。这四个人,一定不会“正规”,正规地着装、正规地开会、正规地谈话,这个主任一定采取,大家庭一样的管理办法。主任是张哥,下面带几个小弟,主任天然地和下属最“亲”,而不是远在上海的总部。总部的郭总,对他们来说,只能是传说中的人物。每天就熟头熟脸的四个人,特别知根知底,互相了解得不能在了解了,非正规才是高效的管理方法。就像“许三多”当年在的高原营地,连班长就5个人,吃饭和睡觉都在一起,想正规都难,连训练都省了。德鲁克说:“管理不在于知,而在于行”,不在于方式,而在于效果,结果导向。

管理者的职责范文第2篇

关键词:利益相关者 集体选择 价值链 价值增值 合作共赢

一、引言

利益相关者集体选择企业理论将利益相关者分为内部利益相关者和外部利益相关者,企业是内部利益相关者通过集体选择签订组织契约形成的,组织契约规定包括企业的价值增值如何在内部利益相关者之间分享在内的企业基本事项,起着公司章程的作用,组织契约的签订界定了企业的所有权边界,企业为内部利益相关者所拥有;而外部利益相关者只与企业签订交易契约,交易契约的签订界定了企业的经营边界,企业的价值增值是交易契约不断签订和履行的结果,企业的经营边界也随之变动。该理论认为企业的目标是利益相关者价值最大化,这里的利益相关者价值等同于内部利益相关者价值也等同于企业价值,企业价值最大化要求企业价值增值最大化,利益相关者集体选择理论的核心和生命力就在于能否实现供应链上下游企业间的合作,使得各企业能够分享更多的价值增值,以实现企业价值最大化。这里企业价值增值取决于价值链总体增值及价值链总体增值对该企业的分配,至于企业价值增值如何在内部利益相关者之间分享已在组织契约中规定,即使内部利益相关者之间存在利益冲突也不改变企业价值最大化的共同诉求,所以不在本文的讨论范围内,本文只研究企业价值增值最大化,即企业价值创造。

二、实现合作共赢,实现价值链总体增值

价值链总体增值是指价值链最终产出与价值链流程总投入的差额,也即价值链上各企业创造的价值增值之和,也就是企业与外部利益相关者创造的价值增值之和。内部利益相关者不同企业的所有权结构不同,不同企业内外部利益相关者构成不同,当内部利益相关者只有股东企业只为股东所拥有时,外部利益相关者范围最大化,包括债权人、供应商、员工、政府、客户等。目前价值管理主要针对企业内部价值驱动因素进行分析研究,并未对企业与外部利益相关者的交易行为进行全面研究以及探讨交易模式对企业价值增值的影响。企业如何进行外部利益相关者管理以实现价值链总体增值成为研究的重点。

(一)银企战略联盟

银行是企业最主要的债权人,银企关系融洽对企业有百利而无一害,必要时企业可以利用其良好的信用等级、融洽的银企关系与银行形成战略联盟实现合作双赢。

银企战略联盟一方面可以共享客户资源,另一方面可以制约并削弱竞争对手。

美洲航空公司(American Airlines)和花旗银行(Citibank)建立了长期的银企战略联盟关系。在联盟的合作协议中约定:信用卡用户可以获得航空公司的旅客航程累计积分――持卡消费1美元相当于累积1英里。 这样一来,美洲航空提高了乘客的忠诚度,而花旗银行则获得了一个高信誉度的新客户群,便于进行交叉营销(cross -marketing)。后来,一家名为 MCI 的大型长途电话公司也加入到该合作伙伴关系中,为每1美元的长途电话费提供多重航程累计积分。

1990年,当美国电话电报公司(AT&T)开始发行“环球卡”(Universal Card),大举进入信用卡市场时,Visa卡和万事达卡(Mastercard)的第一大发卡行――花旗银行就启动了一项合作计划,即鼓励它的1 460万 Visa卡用户选择MCI公司提供的长话服务,作为对AT&T公司进入信用卡市场的反击。

另外,银企联盟在中小企业融资担保中发挥重要作用。供应链的核心企业与银行结成银企战略联盟,并参与到原有的供应链中,组成新的银企联盟供应链。核心企业在银行为其下达的配额内作为供应链中的中小企业的担保方,由银行直接向中小企业发放贷款,从而可以顺利解决中小企业的融资、担保问题,进而提高供应链企业的竞争力,并有效地控制银行的信贷风险,实现银企共赢。

青岛软控(002073)面向中小企业生产的大型专用设备质优却滞销,中小企业急需设备却资金不足又融资困难,这时供应链金融解决了两头难问题。假设设备款300万元,青岛软控将设备销售给中小企业A并收取20%价款60万元同时发货,A企业取得设备所有权并向银行抵押借款300万元,青岛软控向银行承诺若A企业到期未还款其将购回设备,银行基于软控良好信用向A企业放款,A企业取得借款用于支付青岛软控货款。这一融资模式对供应链三方均有利,青岛软控增加了设备销量同时及时收回应收款,中小企业取得贷款满足投资所需,银行降低信贷风险确保资金到期收回。

(二)供应商管理库存(VMI)

供应商管理库存(VMI)是一种在供应链环境下的库存运作模式,本质上是将多级供应链问题变成单级库存管理问题,以供应商为中心,以双方最低成本为目标,在一个共同的框架协议下把下游企业的库存决策权给上游供应商,供应商收集分销中心、仓库和POS数据,实现需求和供应相结合,下游企业只需要帮助供应商制定计划,从而实现下游企业零库存,供应商的库存也会大幅度减少,VMI要求整个供应链上的各个企业共享生产、销售、需求等信息。下表为供应商管理库存模式合作共赢例证。

管理者的职责范文第3篇

[中图分类号] R473.5 [文献标识码] A [文章编号] 1674-4721(2015)08(a)-0186-03

随着人们生活水平的不断提高,人们的健康意识不断增强,因此对护理人员的要求也不断提高,心血管疾病属于内科高风险疾病之一[1],患者需要接受长期的治疗,患者的临床变化多样,病变的随机性强,使临床护理风险加大,并且在护理中要求多项护理同时进行,这也对护理人员提出了更高的要求,为我国对心血管疾病在临床护理中的突破[2],本院在最近几年中根据该病的治疗方式,在对患者的临床护理中引入整体护理模式,现将护理的临床对比资料整理如下,可供参考。

1 资料与方法

1.1 一般资料

2010年12月~2014年12月本院共诊断心血管疾病患者220例,年龄30~85岁,平均56.5岁,其中男性患者120例,女性患者100例,患者入院后检查身体,无其他疾病会对本次临床护理结果造成影响,且对患者说明本次临床试验,所有患者均表示愿意配合护理人员进行治疗。根据不同护理方法将患者分为两组:试验组120例,对照组100例,两组的一般资料差异无统计学意义(P>0.05),具有可比性。参与本次临床护理的护士有30名,其中本科6名,大专4名,中专护士20名;护士职称:主管护师2名,护师6名,护士20名,助理护士2名。根据患者人数,将30名护士分为两组,其中试验组护士20名,对照组护士10名。

1.2 护理方法

对照组护士采用常规整体护理模式进行护理,在护理中采用责任小组制度对患者进行护理[3]。试验组实施分层级责任制整体护理模式护理,方法如下。①明确分工职责:根据本院护士情况,如职称、文化程度、临床经验等成立相应的护理层级岗位,并将这些护士安排在不同的护理工作中。采用护理层级管理管理过程中主要包括4个层级,从层级大小依次为:护士长、护理组长、责任护士和助理护士,不同的层级之间护理工作明确[4]。②护理中采用分级层化分管理方式进行护理并且结合患者的临床症状,将患者分为一级、二级、三级患者,随后根据护士的等级进行护理,其中一级护士主要负责重病患者或大型手术后患者,也参与本院新技术的开发工作,一般护士主要对患者进行基本护理,患者在住院中陪同患者进行检查工作等,在临床护理中明确护理人员的相应工作,根据护士的个人工作能力对护士的工作进行安排[5]。③护士长在护理层级管理中发挥重要作用,其主要责任就是对全科护理工作进行有效监督和评估,并针对护理过程中可能存在的问题上报给医院相关领导,针对性这些问题拟定相应的解决措施;护理组长则主要肩负着本科室患者的护理工作,包括患者护理方案的拟定、护士的健康指导、心理护理等,并制订护士日常中的查房表等,及时向护士长反映患者的相关情况[6]。责任护士与患者直接接触,其主要责任就是根据医师对患者的诊断、治疗情况等叮嘱患者进行相应的护理服务项目,如护理方法的实施、护理过程中的注意事项,患者的健康指导、生活中的日常护理服务等;助理护士的工作相对比较轻松,其主要在责任护士的指导下对患者给予不同的护理服务,如陪检、护理查房、用药护理以及无创操作技术等多个方面的护理[7]。两组护理时间均为1个月。

1.3 观察指标

患者出院前对患者进行问卷调查,调查两组患者对护理的满意度;两组管理质量、重病患者的管理质量、急救药品的管理质量、基础护理质量等指标,评分越高,说明护理效果越明显,护理质量越高。同时,护师采用问卷调查表进行自我评价,得分越高,护师能力越强[8]。

1.4 统计学处理

数据采用SPSS 16软件进行统计分析,计量资料用均数±标准差表示,采用t检验,计数资料用率表示,采用χ2检验,以P

2 结果

2.1 两组护理满意率的比较

试验组的满意率为95%,显著高于对照组的85%(P

2.2 两组护理质量评分的比较

试验组的管理质量评分为(95.5±1.2)分,重病患者的管理质量评分为(94.6±1.2)分,急救药品的管理质量评分为(96.8±1.2)分,基础护理质量评分为(95.7±3.2)分,均显著高于对照组(P

2.3 两组护理人员自评评分的比较

试验组的自评评分为(89.8±1.2)分,显著高于对照组的(80.2±2.1)分(t=20.11,P

3 讨论

心血管内科疾病是临床上常见病,其发病率较高,且随着人们生活节奏的加快其发病率呈上升趋势,患者发病后如果得不到积极有效的治疗将会诱发其他疾病,影响其生活质量。部分患者治疗过程中由于缺乏理想的护理方法,使其的长期效果欠佳,治疗预后较差[9]。

心血管疾病患者护理中对患者使用分层级责任制整体护理模式是主要根据本院现有的人力资源,根据护士的临床护理能力将所有的护理工作进行分类,结合临床实际情况与护理人员的护理水平展开的。分层级责任制整体护理模式能有效避免临床护理中出现纠纷,并能有效提高护理质量[10]。在临床护理的分配中将护士按层级进行分类,随后根据患者的病情,让适合该岗位的护理人员对患者进行护理,这就更能有效地满足不同患者、不同疾病以及患者相关病情的需要[11]。整体护理模式结合分层级管理制度对患者进行护理,患者在入院后就有专业的护理人员进行护理,与传统的整体护理比较,护士的工作更明确化,能提高护理人员的工作效率,对患者的病情也能有更深刻的认识,患者出现相应并发症时,能及时上报主治医生发病的原因,方便主治医生对患者进行有效治疗[12]。

管理者的职责范文第4篇

俗话说:“字要习,马要骑,拳脚要踢打,算盘要拨拉”。医药企业经营成功与否,在很大程度上有赖于管理者角色的发挥,如果管理者对自身职责认识不清,就会出现管理错位现象,致使工作秩序混乱,日常工作漏洞百出、无法正常进行。层级越高的管理者对自身职责认识不清,产生的危害就越大。

一家致力于连锁经营的医药公司成立时,总部自身的管理水平就不高,管理者对自身的管理角色的职责定位模糊,不知道哪些事该管、哪些事不该管,不明确总部对分店的关键控制点在哪里。该公司的高管开展的工作是中层干部的职责,而中层干部开展的则是员工的职责。随着时间的推移,管理者中相互推诿的事情时有发生,在处理这种事情时,又说不清谁应承担管理责任,以致有的事情就不了了之。该公司各层级管理者也提出了自己的管理困惑,反复提到:“每天都很忙,但是都忙了一些杂事,不知道该做哪些工作,不清楚该抓哪些管理,更不用提对关键点监督和控制了”。

药企管理中的大忌有很多,重中之重是管理者自身职责认识不清,迷恋找感觉,缺乏全局意识,无视及无法正确实现自身价值,不能正确区分投资和成本,作茧自缚。

管理不能“被敲打”

众所周知,无论哪个层级的管理者,其所需行使的五项基本职能都是:组织、计划、指挥、控制、协调。层级越高,所履行职能的范围就越广,层级越低,所履行职能的范围就越窄。当管理者在企业中的管理一片混乱,常常受到上级、同级或基层员工“指责、推诿、抱怨、甚至是敲打”,并且不同管理者把手伸向不在职责范围内的员工时,也就意味着中间的管理层自动失效,意味着整个局面的失控。一个只能执行轮胎功能看到眼前路面的驾驶员驾驶汽车的后果其可想而知。乘坐一辆由这样的驾驶员驾驶的汽车,对乘客来说考验的不仅仅是勇气;加入一个由这样的管理者管理的药企,对员工来说,面临的不仅仅是眼前工作上的困扰。乘客离开如此驾驶的汽车是常理,频繁面临人事崩盘的局面对这样的医药企业来说也不奇怪。

纵观药企兴衰的种种因素,我们看到,岗位责任,层级负责,垂直管理,已经被实践证明为有效管理的必备要件,成为管理界的共识。管理者的工作就是通过“管理”所属员工实现组织目标。但更多的实践证明,管理者的成功关键在于管理职责分明,目标清晰、科学可控的“主动推进管理。

离开或是肩负“职责”

“兵熊熊一个,将熊熊一窝”,药企经营的命脉往往是系于管理者身上,其重要性不言而喻。然而,管理者一般是拿着高薪,享受特权,声名赫赫,但每年还是有许多大小规模不同的药企因为管理不善而被迫破产、关闭或重组,而其中不乏在种种管理者中,有职责不清,混沌管理者扮演着一个个不那么光彩的角色。对于此,药企要么痛定思痛的把不懂得管理的管理者调离管理岗位,或者直接让其走人;要么就是重新扮演好管理者的角色问题!换句话说,就是应肩负起管理者应该承担职责,而不是经常被警告,时时处处“被敲打”认为你的管理有问题甚至是不懂管理。从管理者所处的位置和肩负的责任来看,管理者应该具有处理好以下三重职责的能力,这也是考验一个药企管理者是否名副其实的最主要考核指标,包括:确定药企发展战略方向;严格监督执行,加强考核;选好人,用好人,调动一切有生力量来办事。如具备请自省,如不具备请离开。

甄别“松鼠”和“袋鼠”

管理者在主动推进管理职责时,应以“教练”身份界定员工真实情况,要甄别出“松鼠”和“袋鼠”,懂得“让松鼠爬树、让袋鼠跳远”的道理,这样各自才能发挥所长、乐得其所。并协助员工提高他们对组织系统的了解能力,促进每个人的学习。

对于管理者自身而言,药企同样要做好“松鼠与袋鼠”甄别:1、全面熟悉和了解药企的内设机构、部门职责、人员构成、分工等基本情况,从而做到胸有成竹,处事不慌。2、积极修炼“事小不轻为、事杂不乱为、事急不盲为、事难不怕为”的工作理念,对重要事项要抓住时机推进落实;对突发事项快速反馈,及时处理;对专题事项进行跟踪了解,督查促办;对具体事项落实到位,注重实效。3、职责服务时:为领导服务做到到位而不越位,为部门服务做到携手而不插手;为基层服务做到主动而不被动。

责任与授权需对等

当一个人不知道他驶向哪个港口时,所有的风向都是错误的。管理者的权力却是通过不断下放而得到逐步扩大。国家治理如此,药企管理亦如此。授权,已成为有效管理的最佳途径。但授权有个误区,就是在授权时只给下属相应的责任而没有给下属充分的权力,这种授责不授权的做法是大错特错的。下属履行其职责,必须要有相应的权力。只有责任而没有权力,则不利于激发下属的工作热情,即使处理职责范围内的问题也需不断请示管理者,这势必造成下属的压抑。只有权力而没有责任,又可能会使下属不恰当地滥用权力,这最终会增加药企管理者的过程控制难度。

作为药企管理者,如果你将某一项任务交给你的下属去办,那么你要充分信任你的下属能办好,因为信任具有无比的激励威力,是授权的精髓和支柱。同时,授权时,一开始就应清晰地告诉员工,公司试图达到什么目标,让员工对授权目标有个明确的、具体的认识。依据自己的能力,迈出第一步、第二步……,直至成功。

硬指标与软实力匹配

管理者的职责范文第5篇

关键词:指针;安全;管理者;职责

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)10-2327-03

Control Pointer with Clear Duties

SONG Zhen-fang

(Academy of Information Technology, Luoyang Normal University, Luoyang 471022, China)

Abstract: The pointer is crucial concept in C/C++ language but also is controversial and debated in software. It has realistic meanings for software safety to improve the safety of using a pointer.The pointer is direct manager of memory and it is transferred in a program as function parameters causes memory constantly with new managers. Programmers cognizant of the different responsibilities of managers and manipulate pointers to control memory can improve the program’s bined with concrete example to analysis its effectiveness.

Key words: pointer; safety; manager; duty

指针是C/C++语言区别于其他高级语言的主要标志之一。指针的灵活性赋予程序员强大控制能力的同时也因其难以驾驭而带来软件安全的潜在隐患。知彼知己,百战不殆,欲驾驭指针首先要了解指针,弄清使用指针的目的,然后在控制指针的时候才能真正注意到一些细节问题,而细节常常是安全隐患之所在。对高可信软件需求的增加使得指针程序的验证成为近期的研究热点,不少研究者专注于如何对指针程序进行精确的分析,如文献[1-3]等对此问题进行了深入研究。本文从管理者职责的角度谈指针的控制,由于指针涉及到的概念比较多,需要学习和探讨的内容丰富,在内容上侧重于分析通过指针申请内存和释放内存的问题。

首先介绍指针概念、强调管理理念和提出管理者职责概念,然后结合几个应用背景不同的案例分析如何理清管理者职责,达到明明白白控制指针的目的。

1 认识指针

1.1 指针相关概念

把数据比作演员,内存比作演员表演的舞台,则程序员就相当于导演。导演指挥演员上下舞台需要知道演员的名字,数据的名字就是变量名,变量名实际上传递了内存地址信息,内存地址又被称作变量地址(即指针),存放指针的变量称为指针变量。

程序员是程序的导演,是程序的最高管理者,而指针是内存单元空间的直接控制者。对于程序员来讲,无论是采用结构化方法或面向对象方法进行程序的分析与设计,应该意识到指针做为参数进行传递导致了内存单元的控制者不断增加,究竟谁应该对内存单元空间的申请和释放负责,是指针应用安全性的关键。许多程序员就是因为没有搞清楚这一点,在程序代码编写过程中埋下了许多指针隐患。所以,结构化编程要弄清模块的职责,面向对象编程要弄清类对象的职责,职责分明就可以做到对指针的精确控制,最大程度地避免种种使用指针带来的问题。

1.2 指针常见问题

1) 指针在使用前必须进行初始化

好的习惯是声明一个指针的同时为其赋值NULL,如int *ptr=NULL,否则系统会让指针指向一个随机的内存单元,如果该地址正被系统使用着,程序员冒然去使用该指针做操作就会带来不可预知的错误。

2) 内存泄露

程序员使用指针在堆上创建动态一维或多维动态数组[4],程序结束时忘记释放堆上的内存空间,或者因为指针转而指向其他内存空间导致已被申请的内存单元失去了管理者,均会造成内存泄露。

3) 迷途指针

迷途指针也叫野指针或者悬浮指针。迷途指针的出现常常是因为将delete用于该指针后,删除了它所指的内存但没有将它设置为空引发的。如果程序员随后没有重新对其赋值的情况下使用该指针也会引发错误。

4) 重复delete问题

使用指针控制内存单元时经常会出现多个指针指向同一块内存单元,即拥有多个管理者的情况,如果该内存单元已经被某个管理者释放,其它管理者还要再次去释放就会出现重复delete问题。

一个简单的例子如下所示。

class A{};

void main()

{

A *ptr1=new A;

A *ptr2=ptr1;

delete ptr1;

delete ptr2;

}

上述代码中ptr1是堆上内存单元的管理者,ptr2也是它的管理者,将delete应用于ptr1实现了堆上内存的释放,再将delete应用于ptr2时就导致了重复delete问题的产生。

5) 指针传递的错觉

程序员定义了一个指针变量,然后以该指针变量为函数实参调用函数,以期在该函数体内实现内存空间的申请,但发现函数调用完毕后通过该指针变量去管理内存单元却发生错误。具体代码如下所示。

void Create(int*) ;

void main()

{int *ptr=NULL;

Create(ptr);

*ptr=10;

cout

delete ptr;

ptr=NULL;

}void Create(int* p)

{p=new int;

}

粗看代码,ptr指针变量做了正确的初始化,使用delete ptr回收了内存单元,最后又将ptr赋值为NULL避免了迷途指针,似乎很完美,但运行代码却出现了错误。参看图1所示进行分析。

从图中可以清晰看出ptr在函数调用前后始终是值为NULL的空指针。解决该问题方法参见后面的2.1节内容。

关于指针涉及到的问题很多,本文无意于面面俱到,接下来结合不同应用背景的案例从管理者职责的角度分析通过指针申请内存和释放内存的过程中如何避免上述问题的发生。

2 指针应用案例

2.1 指针传递错觉问题的解决

为了叙述的方便,提出客户方和服务方的概念,本文后面将沿用该称谓。客户方是指需求的产生方或者是调用方,服务方是指满足需求的一方或者是被调用方。如在前图1所示的案例中,main()函数称为客户方,Create()函数称为服务方。

在图1所示的案例中,客户方提出要使用堆上内存空间的需求,服务方负责申请堆上内存用于满足客户方。通过分析图1发现客户方的需求并没有得到满足。弄清了客户方和服务方彼此的职责后,应首先画出如图2所示的正确内存状况图。

然后如下所示进行代码的改写。

void Create(int**);

void main()

{int *ptr=NULL;

Create(&ptr);

*ptr=10;

cout

}void Create(int** p)

{*p=new int;

}

2.2 动态链表讨论

指针在动态链表的实现中起着举足轻重的作用。常规的动态链表[5]是由两个密切配合的类相互协调实现的。这两个类是链表结点类和链表类,分别用ListNode和List表示。为了突出两者角色的不同,称ListNode为ListNode“员工类”、List为List“管理者类”。List“管理者类”和ListNode“员工类”进行协调共同为客户方提供服务。ListNode“员工类”的两个数据成员分别用int data和ListNode* link表示,List“管理者类”的数据成员用ListNode* head表示。常规的动态链表应用案例如下代码所示。

#include "list.h"

void main()

{

List alist;

for (int i=0;i

alist.InsertTail(i+1);

alist.Print();

}

在代码中main()函数代表客户方,alist对象代表服务方,那么内存空间的申请和释放是如何分工实现的呢?

客户方在栈上生成了alist对象,并负责析构alist对象所占据的内存空间。服务方alist对象负责堆上内存空间的申请和释放,服务方alist对象在被销毁时,其析构函数负责了堆上内存空间的释放。接下来我们将main()函数做如下所示的代码修改。

#include "list.h"//list.h中有#include "listnode.h"语句

void main()

{

List alist;

ListNode* pListNode=NULL;

for (int i=0;i

pListNode=new ListNode(i+1);

alist.InsertTail(pListNode);

}

pListNode=NULL;

alist.Print();

}

观察客户方的需求,发现有以下变化:①客户方直接操控ListNode“员工类”,在堆上申请了内存空间;②客户方负责将pListNode指针置空值,防止迷途指针的出现;③服务方alist 对象不用考虑堆上内存空间的申请,而只考虑堆上内存空间的释放。

2.3 动态链表的进一步讨论

客户方和服务方是一个相对的概念,应该动态灵活地看待它。前面对动态链表的讨论限于最高层,现在我们把注意力集中在动态链表的内部,考虑List“管理者类”和ListNode“员工类”的协调配合关系。它们两者均拥有指针,都是内存的管理者,所以弄清List“管理者类”和ListNode“员工类”各自的职责也就弄清了两者的配合关系。在常规的动态链表中,L istNode“员工类”不考虑堆上内存空间的申请和释放问题,这些工作都交给List“管理者类”去完成。但是我们可以改变设计的方案,比如,让L istNode“员工类”和List“管理者类”配合共同完成堆上内存空间的释放。L istNode“员工类”和List“管理者类”的析构函数代码如下所示。

ListNode::~ListNode()

{

if (this->pNextListNode)

delete pNextListNode;

}

List::~List()

{

if (this->head)

delete this->head;

}

从代码中可以清晰地看出,链表类对象alist在栈上被销毁时调用它的析构函数,该析构函数非常简单,只是对链表的头指针应用delete操作,该操作导致链表的第一个结点被销毁,因而又会调用L istNode“员工类”对象(结点)的析构函数,该过程一直传递下去构成递归关系,非常优雅地实现了内存空间的释放功能。

3 结束语

指针是C/C++语言中灵活而重要的工具,使用指针可以实现灵活的数据结构。本文概述了指针常见问题,并重点分析了用管理者职责的概念去帮助程序员理清动态链表中控制指针的思路。指针涉及到的内容丰富,但只要程序员抓住指针控制内存的本质,以职责为线索进行思索,就比较容易建立清晰的思路控制指针,提高程序的安全性。该方法在编程实践中具有良好的效果。

参考文献:

[1] 张广梅,李晓维.动态内存错误的静态检测[J].计算机辅助设计与图形学学报,2005(3).

[2] 徐厚峰.空指针解引用静态检测方法研究[D].长沙:国防科学技术大学,2008.

[3] 柯平. 内存泄漏静态检测模型的设计与实现[D].北京:北京邮电大学,2009.