clarified pickling docs
diff --git a/docs/advanced.rst b/docs/advanced.rst
index 990cfd9..e46873f 100644
--- a/docs/advanced.rst
+++ b/docs/advanced.rst
@@ -1225,7 +1225,8 @@
             if (t.size() != 2)
                 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>());
 
             /* Assign any additional state */
@@ -1247,7 +1248,9 @@
 
 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``
-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::