2
할당 된 shared_ptr 변수를 반환하는 함수를 만들어야합니다. 이게 올바른 방법일까요?함수에 shared_ptr을 할당하십시오.
typedef boost::shared_ptr<std::vector<char> > sharePtr;
void createPtr(sharePtr &p)
{
p = sharePtr(new std::vector<char>);
}
void test()
{
sharePtr p;
createPtr(p);
}
'make_shared'에 대한 권장 사항은 객체가 크고 ('vector'가 아닌 경우) 약한 포인터를 사용하고 있다면 (이 코드는 그렇지 않습니다),'make_shared'는 저장하는 시간/메모리에 비해 가치있는 것보다 많은 메모리를 낭비합니다. , 나는 그것을 언급 할 것이라는 점을 생각한. –
@ 스티브 : 동의. counter-counter-recommendation :'make_shared'는 예외 안전합니다.이 코드에서는 문제가되지 않습니다. BTW, 일반적인 구현은 개체가 큰지 확인하고 두 경우 할당합니까? – ybungalobill
@ybungalobill : 잘 모르겠지만, 대부분의 shared_ptr로 제어되는 객체는 결코 약하게 참조되지 않기 때문에 make_shared가 그렇게하는 것이 현명하지 않을 수 있습니다. –