作为Mac OS X开发人员库的一部分,有一个very good memory management guide for objective c。它不仅描述了各种内存管理功能(例如retain
,autorelease
和dealloc
)做什么,而且还描述了何时使用每种方法。
例如,它具有以下释放内存的准则:
然后提供有关这些规则的详细信息,例如
通过遵循这些准则,使用您的代码的人员可以轻松地知道何时需要从方法返回的
retain
或release
对象以及何时不需要。而且,该指南显然是由具有多年与 objective-c 合作经验的人撰写的。因此,在大多数情况下,遵循内存管理准则会比自己提出内存管理准则产生更好的代码。
由于这些优点,我想知道在某处是否有类似的c++指南。您可以通过多种方法将对象传递或返回给c++中的方法:
boost::shared_ptr
(或其他智能指针)我知道它们是如何工作的,但是我一直不确定应该使用哪种方法。每种方法都有很多不同的利弊,我发现我在浪费时间来决定使用哪种方法,而后来在发现错误的选择时才进行更改。
如果我有c++的内存管理指南(如 objective-c 指南),那将是一件容易得多的工作。那么,是在网站上还是在书中出版的,周围有没有?另外,大多数c++开发人员都遵循一套准则吗?
最佳答案
不同之处在于,对于Objective C,您会看到一个约定,该约定在标准库中使用,并且实际上在该平台的每个程序中都使用。
相反,对于您可能想对应用程序使用哪种策略,C++不可知,因此没有可遵循的一般规则。如果您使用智能指针,则有某些规则,如果您使用层次结构所有权(如在Qt中),则还有其他规则,如果您使用垃圾收集方法,则规则会再次更改。
或多或少像硬件一样,Apple方法中的问题比较简单,因为没有多样性。如果该品种是值得抵抗所包含的复杂性或仅仅是毫无意义的复杂性的重要资源,则值得商bat。
关于c++ - 是否有c++的内存管理指南,就像一个苹果为目标c编写的指南一样?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8366200/