1 c++
我记得有人说如果你通过lib创建一个类,你应该通过库来销毁它.那么,这是否意味着我不应该叫删除?我应该打个电话myclass.deleteMe()?重载删除会解决问题吗?
我记得有人说如果你通过lib创建一个类,你应该通过lib来销毁它.
这意味着如果你在lib中调用一个函数为你创建一个对象,你应该阅读该函数的文档,它必须说明你如何再次释放该对象.通常,免费内容的函数被命名为类似于分配函数.例如,库pcre有两个名为pcre_malloc和的函数pcre_free.
原因是,因为库以一种对你不透明的方式分配(这是你首先使用该函数的原因).它可以从程序的数据部分获取内存,而你(错误地)假设它在使用时可能从堆中获取内存delete.
如果您是该图书馆作家,则适用相同的规则.确保当其中一个函数返回动态分配的对象时,您会说出调用者必须如何处理它
您几乎不应该为您的类重载delete运算符,除非您还重载了new运算符.重载delete运算符不是字面意思:它意味着你只是重载对象的相关内存的重新分配.只有在您拥有自己的内存池或想要记录对象的每个内存分配/释放时才有意义.