class X {
public:
X(int i) : num(i){}
int num;
};
void f(int i){
static X* px1 = new X(i);
X* px2 = new X(i);
cout<<px1->num;
cout<<px2->num<<' ';
};
void main(){
for (int i=0;i<5;i++)
f(i);
}
这段代码会输出00 01 02 03 04
,但我不太明白为什么静态指针px1
不能使用operator new
.
此外,此代码存在内存泄漏问题。我可以使用delete
吗px1
?在两个指针上使用会delete
解决内存泄漏问题吗?