나는 다음을 수행 할 작업 :C++ 범위를 벗어난 후 std :: vector 데이터를 할당 해제하지 않는 방법은 무엇입니까?
{
std::vector<int> a;
...
result.aData = a.data();
return result;
}
그러나 범위 내가 원하지 않는 끝날 때이 분명히 데이터의 할당을 해제합니다. 내가 그이 할 수있는 본 것은입니다 :
{
std::vector<int> *a = new vector<int>();
...
result.aData = a->data();
a = nullptr;
return result;
}
하지만 동적 할당을 피하기 위해 같은 것은, 사람이 어떻게 이런 짓을 했을까 방법 어떤 생각을 가지고 있습니까?
감사합니다. :)
왜 '결과'에 원시 포인터가 있어야합니까? 누가 데이터를 소유해야합니까? –
그러나 '벡터'는 동적으로 내부 저장소를 할당하므로 어쨌든이를 피하지 못합니다. 무엇을 성취하려고합니까? – Useless
쉽습니다! 'return a;'또는'result.a = std :: move (a); return result;' –