Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2007-10-16 14:13:52


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
> }

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

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