关于返回指向局部对象的指针的有关问题

关于返回指向局部对象的指针的问题
调用一个函数:
C/C++ code

         int *func(){ 
                 int * ip=new int(3); 
                 return  ip;


  在调用此函数时如:int * var=func();得到的结果*var的值就是3啊!ip是在动态存储区分配的,不是在func()函数的栈中分配的,清栈的时候,是不是ip没有释放!是这样理解的吗???
  那为什么书中说不要返回指向局部对象的指针????

------解决方案--------------------
动态分配不算局部变量···
------解决方案--------------------
准确的说,
ip本身所占用的内存在退出函数的时候,被释放了。
但是ip所指向的动态内存是不会自动释放的,需要人工释放。