内容简介:char *比字符数组更受欢迎?翻译自:https://stackoverflow.com/questions/1721862/dos-and-donts-while-using-pointers
char *比字符数组更受欢迎?
>避免手动管理内存,而是使用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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高可用MySQL
)Charles Bell Mats Kindahl Lars Thalmann / 宁青、唐李洋 诸云萍 / 电子工业出版社 / 2011-10 / 98.00元
《高可用mysql:构建健壮的数据中心》是“mysql high availability”的中文翻译版,主要讲解真实环境下如何使用mysql 的复制、集群和监控特性,揭示mysql 可靠性和高可用性的方方面面。本书由mysql 开发团队亲自执笔,定位于解决mysql 数据库的常见应用瓶颈,在保持mysql 的持续可用性的前提下,挖潜各种提高性能的解决方案。本书分为三个部分。第一部分讲述mysql......一起来看看 《高可用MySQL》 这本书的介绍吧!