Я вполне уверен, что вы играете с неопределенным поведением, что плохо.
данные, на которые указывают, были уничтожены при уничтожении уникального указателя, тот факт, что значения совпадают, и тот же слот былвыбрано - удача.
для указателей на тип массива используйте вектор
std::vector<int> get()
{
return std::vector<int>(4);
}
int main()
{
std::vector<int> arr1=get();
std::vector<int> arr2=get();
return 0;
}
для обычных указателей с одним значением, затем вы можете вернуть unique_ptr;
std::unique_ptr<int> get(){
return std::unique_ptr<int>(new int(0));
}
:::
std::unique_ptr<int> ptr=get();