Boost logo

Boost Users :

From: Peng Yu (pengyu.ut_at_[hidden])
Date: 2007-10-16 15:26:33


On 10/16/07, David Abrahams <dave_at_[hidden]> wrote:
>
> on Tue Oct 16 2007, "Peng Yu" <pengyu.ut-AT-gmail.com> wrote:
>
> > Hi,
> >
> > The following program runs well in my system. However, if I change 1
> > to 0, it will terminate at the line with "delete". Does this mean that
> > boost::shared_ptr can tell if the pointer is from the stack or the
> > heap and does different things based on where the pointer is from?
>
> No. The termination is just an expression of the fact that you invoked
> undefined behavior by passing an illegal argument to delete.
>
> >
> > Thanks,
> > Peng
> >
> > #include <iostream>
> > #include <boost/shared_ptr.hpp>
> >
> > int main() {
> > #if 1//try change this to 0
> > int a[100];
> > boost::shared_ptr<int> p(a);
> > std::cout << std::endl;
> > #else
> > int a[100];
> > delete a; // would terminate here
> > std::cout << std::endl;
> > #endif
> > }

I don't think my question was completely answered. Do you means
reseting shared_ptr with an array from the stack is not defined? Or it
is defined and shared_ptr can figure out it is from the stack and do
not delete it?

Thanks,
Peng


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net