c – 使用指针时DO和Donts

栏目: C · 发布时间: 5年前

内容简介:char *比字符数组更受欢迎?翻译自:https://stackoverflow.com/questions/1721862/dos-and-donts-while-using-pointers

char *比字符数组更受欢迎?

C具体

>避免手动管理内存,而是使用RAII容器,如std :: auto_ptr,boost :: scoped_ptr,boost :: shared_ptr和等效的数组容器.更简单,通常std :: vector工作正常,它根本不需要任何指针使用.最后,您可以传递引用,而不是将指针传递给大型或可修改的数据结构.指针可以表示数组,而引用可以避免这种歧义.

>索引数组是大多数指针算法的理想替代品.它通常不比指针算术慢,这通常更容易出错并且更难以阅读和维护.通常,不要以可读性为代价进行微优化.

>调用正确的释放例程:delete []用于仅通过new … []分配的数组,仅用于指向单个对象的指针,而且仅用于通过C api分配的内存的free(…)(例如malloc) (..)).这些不能混淆; C释放例程包括析构函数调用,因此需要正确调用.

>显式初始化并设置无意义的NULL指针.调试意外的空取消引用比不正确的内存访问更容易.释放NULL指针是可以的,因此您不需要使用检查来破坏析构函数以避免这种情况.如果过早删除对象,则应将其指针设置为NULL,以避免双重删除同一指针并避免意外取消引用悬空指针.

>如果您正在使用C继承并覆盖析构函数,请阅读虚拟析构函数;这些是正确性所必需的(简而言之,基类必须明确地将析构函数标记为虚拟).

>如果必须手动管理内存,请注意谁“拥有”指针.只有所有者才能释放指针指向的对象或数组,并且在所有者删除指向它的指针后,其他任何对象都不能使用该对象. boost :: shared_ptr是一个无障碍的低开销容器,当你需要共享指针时通常很好.

翻译自:https://stackoverflow.com/questions/1721862/dos-and-donts-while-using-pointers


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数据结构与算法

数据结构与算法

张铭、王腾蛟、赵海燕 / 高等教育出版社 / 2008-6 / 34.00元

《数据结构与算法》是普通高等教育“十一五”国家级规划教材,也是北京市精品课程主讲教材。《数据结构与算法》按照IEEE/ACM CC20025和教育部教指委关于“计算机科学与技术专业规范”(CCC2005)的要求编写,力求使学生较全面地理解数据结构的概念、掌握各种数据结构与算法的实现方式,同时比较不同数据结构和算法的特点,重点强调实践教学和学生动手能力的培养。 《数据结构与算法》的内容涉及基本......一起来看看 《数据结构与算法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具