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


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

查看所有标签

猜你喜欢:

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

用户故事与敏捷方法

用户故事与敏捷方法

Mike Cohn / 石永超、张博超 / 清华大学出版社 / 2010-4 / 39.00元

《用户故事与敏捷方法》详细介绍了用户故事与敏捷开发方法的结合,诠释了用户故事的重要价值,用户故事的实践过程,良好用户故事编写准则,如何搜集和整理用户故事,如何排列用户故事的优先级,进而澄清真正适合用户需求的、有价值的功能需求。 《用户故事与敏捷方法》对于软件开发人员、测试人员、需求分析师和管理者,具有实际的指导意义和重要的参考价值。一起来看看 《用户故事与敏捷方法》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具