memory leak with __iadd__
I've been trying to track down a memory leak. When I use the following: .def ("__iadd__", &hist_t::operator+=, bp::return_self<>()) I have a leak. When changed to: .def (bp::self += hist_t::value_type()) there is no leak. Any ideas? I suppose I maybe should just start using the latter style and forget the former.
On Wed, Sep 25, 2013 at 11:22 AM, Neal Becker <ndbecker2@gmail.com> wrote:
I've been trying to track down a memory leak. When I use the following:
.def ("__iadd__", &hist_t::operator+=, bp::return_self<>())
but this is no different then any other function def with return_self<> policy (which i do a lot)? when do you observe the leak? during def or during a+b in python?
I have a leak.
When changed to:
.def (bp::self += hist_t::value_type())
there is no leak. Any ideas? I suppose I maybe should just start using the latter style and forget the former.
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig
Nikolay Mladenov wrote:
On Wed, Sep 25, 2013 at 11:22 AM, Neal Becker <ndbecker2@gmail.com> wrote:
I've been trying to track down a memory leak. When I use the following:
.def ("__iadd__", &hist_t::operator+=, bp::return_self<>())
but this is no different then any other function def with return_self<> policy (which i do a lot)? when do you observe the leak? during def or during a+b in python?
The leak must be in using +=. The def is only executed once. This is a big leak, causing eventual OOM.
if you .def ("test_iadd", &hist_t::operator+=, bp::return_self<>()) and you use it instead of += do you get the leak? On Thu, Sep 26, 2013 at 10:44 AM, Neal Becker <ndbecker2@gmail.com> wrote:
Nikolay Mladenov wrote:
On Wed, Sep 25, 2013 at 11:22 AM, Neal Becker <ndbecker2@gmail.com> wrote:
I've been trying to track down a memory leak. When I use the following:
.def ("__iadd__", &hist_t::operator+=, bp::return_self<>())
but this is no different then any other function def with return_self<> policy (which i do a lot)? when do you observe the leak? during def or during a+b in python?
The leak must be in using +=. The def is only executed once. This is a big leak, causing eventual OOM.
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig
participants (2)
-
Neal Becker -
Nikolay Mladenov