所以我正在阅读一些关于删除指针参数特别是这些的堆栈溢出答案(1,2),因为我正在构建一个函数,需要一个指针作为参数。我应该删除传递给函数的指针吗?
功能的简化版本低于:
void draw(Shape * b)
{
//Draws code....
}
没有我感到困惑在这里有什么缺失。例如,如果函数是这样调用的:
Shape * c;
draw(&c);
然后我不必删除任何东西。但是,如果是这样的:
draw(new Shape{});
然后我必须。所以基本上,我的问题是,如果在参数中使用new
关键字,我应该如何去删除。在函数中不会有任何可能的异常,所以不需要RAII。有任何想法吗?请不要提示任何涉及智能指针的事情,因为这是我已经做的事情,这个问题是好奇心。此外,请回答知道该函数可以采用新操作符或现有的指针,基本上意味着我需要一种方法来区分两者。另外,对于我的链接:这些并不真正回答我的问题,因为他们中的大多数只依赖于智能指针或一个呼叫或另一个。
给大家回答:你意识到代码就是一个例子吧?这不是实际的代码,但是(我认为)会生成相同的答案。这不是关于代码,而是真正的删除。 –
我认为答案的立场,不管这个例子。一般来说,没有办法仅仅从一个原始指针告诉对象的生命周期。 – TartanLlama