shared_ptrs를 많이 사용하는 일부 코드의 프로파일 링에서 reset()이 놀랍게 비용이 많이 든다는 것을 발견했습니다. 예를 들어std :: tr1 :: shared_ptr <>. reset()이 왜 그렇게 비쌉니까?
: (VC++ 2010에서) 마지막 줄에있는 리셋()를 추적
struct Test {
int i;
Test() {
this->i = 0;
}
Test(int i) {
this->i = i;
}
} ;
...
auto t = make_shared<Test>(1);
...
t.reset(somePointerToATestObject);
, 나는 그것이 새로운 참조 카운팅 객체를 생성 것을 발견했다.
기존의 심판 계수를 재사용하고 힙을 귀찮게하지 않으면 서 저렴한 방법이 있습니까?
궁금한 점이 있다면 왜 '1'의 임의 포인터 값을 공유하고 있습니까? – ianmac45
@ian : 그는 그렇지 않습니다. 'make_shared'가 무엇을하는지 알고 있습니까? – fredoverflow
'somePointerToATestObject' 유형은 무엇입니까? –