What happens when a reference point to an object of a pointer (object in the heap) when the reference scope end? I mean is the object in the heap is destroy or it remains: 

e.g:

```
void f(){
    Object &obj= *new Object() ;

   int &i = new int;
}

void main(){
  f();
}

```

the objects are destroy at the end of f or must be call "delete &n" at the end? the same for primitive values?
if it must be destroy then how I can create a copy of a constant primitive value and asigned to a referenced without make it with a "new"?

(sorry for the grammar or ortography, and the typing error from the original question)