clarified pickling docs

This commit is contained in:
Wenzel Jakob 2016-04-13 13:30:05 +02:00
parent 3d0e6fff25
commit d40885a1e6

View File

@ -1225,7 +1225,8 @@ looks as follows:
if (t.size() != 2) if (t.size() != 2)
throw std::runtime_error("Invalid state!"); throw std::runtime_error("Invalid state!");
/* Invoke the constructor (need to use in-place version) */ /* Invoke the in-place constructor. Note that this is needed even
when the object just has a trivial default constructor */
new (&p) Pickleable(t[0].cast<std::string>()); new (&p) Pickleable(t[0].cast<std::string>());
/* Assign any additional state */ /* Assign any additional state */
@ -1247,7 +1248,9 @@ An instance can now be pickled as follows:
Note that only the cPickle module is supported on Python 2.7. It is also Note that only the cPickle module is supported on Python 2.7. It is also
important to request usage of the highest protocol version using the ``-1`` important to request usage of the highest protocol version using the ``-1``
argument to ``dumps``. argument to ``dumps``. Failure to follow these two steps will lead to important
pybind11 memory allocation routines to be skipped during unpickling, which will
likely cause memory corruption and/or segmentation faults.
.. seealso:: .. seealso::