假设我创建了一个具有此结构的类
Zend_Http_Client_Adapter_Socket
我读到解除分析器中使用的变量是一件好事。
class A
{
int a;
B* b;
}
但是我怎么做一般的int,double,primitive类型的变量呢?什么是最佳方式或良好的编程规则?
答案 0 :(得分:4)
您不需要删除基本类型。
但不仅仅是基本类型。对于您未使用new
分配的任何内容,您不必致电delete
。即使是指针。
答案 1 :(得分:0)
你可以在堆上分配原语类型(new ...)但通常这没用。
一般规则是可能对任何类型(int,double或您自己的类型)使用new,并且必须为每个已分配的变量发出删除在新的堆上。
但是,当您要求最佳实践时,您应阅读有关智能指针(std::shared_ptr,std::unique_ptr)的文章或教程,这些文章或教程可帮助您避免在使用堆分配对象时出错。您也可以搜索有关lifetime和借阅的文章。
最后,如果您想知道编写优秀且安全的C ++的建议做法,您一定要阅读isocpp指南:http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines。他们用简单的语言描述了你应该做什么或不该做什么,为什么以及如何做。
答案 2 :(得分:0)
每c++
new
delete
应该有一个new
。
当调用new
时,您正在堆上分配,并且您负责解除分配。如果没有使用import bodyParser from "body-parser";
,则在堆栈上分配内存,并在进入我们的范围时释放内存。
答案 3 :(得分:0)
我认为B是另一个类。你刚刚声明了指针。但尚未实例化。您尚未为该指针分配任何内存。因此将其初始化为null。
B* b = NULL;
现在,在解构器中删除之前,请检查是否已分配任何内存。
if(b){delete b; b = NULL;}
在上面的代码中,如果你分配任何内存,那么只有它会解除分配。 例如:如果你做了
*b = new b
现在为这个特定指针分配了一些内存。所以它会正确解除分配。 除非直到为指针分配一些内存,否则不需要解除分配。 希望这会帮助你。