我做的指針一些時髦的東西。我擔心我可能要離開自己開放一些指針問題:正確處理的建議,這是明智的嗎?
#include <iostream>
class Vector2
{
private:
double x;
double y;
public:
Vector2(double x, double y)
{
this->x = x;
this->y = y;
}
Vector2(double coords[2])
{
x = coords[0];
y = coords[1];
}
typedef double * const dArr;
operator dArr()
{
double out[2] = {x, y};
return out;
}
};
int main()
{
double ids[2] = {2.3 ,3.3};
Vector2 v = ids;
std::cout << 5 << std::endl;
double vect[2] = {v[0], v[1]};
double * const v2 = v;
std::cout << vect[0] << " " << vect[1] << std::endl;
while(1) { }
return 0;
}
在運營dArr()函數在我的Vector2類我擔心通過返回一個指針我打開自己,直到指針不會被刪除的問題,它會導致內存泄漏。我有權擔心,在這種情況下是否有解決方案來防止內存泄漏?任何建議都會受到歡迎。
謝謝。
正如答案中指出的那樣,這不是泄漏,儘管這是一個問題。但是,如果您是泄漏點,您可能會返回某種智能指針。 – 2010-12-16 17:42:40
@David Thornley:如果我要在main()中爲v2分配一個新指針,那麼原指針是不是會被泄漏? – 2010-12-16 17:51:22
不,指針是靜態分配的,所以當它在主結束時超出範圍時它將被釋放。指針指向的內存(這是你通常會泄漏的內存)也是靜態分配的,並且已經超出了範圍,所以它已經被釋放了! – Kleist 2010-12-16 17:55:40