結果我期望test1.cpp和test2.cpp發出類似的結果。
相同的打印每次運行,因爲沒有內存泄漏..
但它沒有。我不知道爲什麼。
請你讓我知道它是如何理解這種情況。weired從shared_ptr泄漏測試代碼
test1.cpp
#include <iostream>
#include <memory>
using namespace std;
class Class {
public:
shared_ptr<int> value1;
shared_ptr<int> value2;
Class() {};
};
int main() {
char pause;
while (true) {
shared_ptr<Class>cls(new Class());
cout << cls.get() << endl;
cin >> pause;
}
return 0;
}
我的結果
0x94b5a10
1
0x94b5a28
1
0x94b5a10
1
0x94b5a28
1
0x94b5a10
測試2.cpp
#include <iostream>
#include <memory>
using namespace std;
class Class {
public:
int value1;
int value2;
Class() {};
};
int main() {
char pause;
while (true) {
shared_ptr<Class>cls(new Class());
cout << cls.get() << endl;
cin >> pause;
}
return 0;
}
我的結果
0x91baa10
1
0x91baa10
1
0x91baa10
1
0x91baa10
1
0x91baa10
test3.cpp - 這是最weired結果..
#include <iostream>
#include <memory>
using namespace std;
class Class {
public:
shared_ptr<int> value1;
shared_ptr<int> value2;
shared_ptr<int> value3;
Class() {};
};
int main() {
char pause;
while (true) {
shared_ptr<Class>cls(new Class());
cout << cls.get() << endl;
cin >> pause;
}
return 0;
}
我的結果
0x826ba10
1
0x826ba10
1
0x826ba10
1
0x826ba10
1
0x826ba10
無論是有效的行爲。你能解釋一下你的預期嗎?爲什麼你認爲另一個不好? – nvoigt
https://ghostbin.com/paste/sft4q這是我的預期。對於鏈接抱歉。 stackoverflow系統很糟糕。 – combabo
你可能/應該剛剛編輯你的問題,並把你的推理。 StackOverflow不是一個論壇。 – drescherjm