[Python-Dev] MemoryError... how much memory?

Facundo Batista facundobatista at gmail.com
Wed Oct 27 15:30:16 CEST 2010


There are a lot of places where Python or modules do something like:

    self->buf = (char *)malloc(size);
    if (!self->buf) {
              PyErr_SetString(PyExc_MemoryError, "out of memory");

At job, we're having some MemoryErrors, and one thing that we would
love to know, if how much memory it was asking when that happened.

So, I thought about doing something like:

    char message[50];
    ...
    self->buf = (char *)malloc(size);
    if (!self->buf) {
              snprintf(message, 50, "out of memory (asked: %lld)", size);
              PyErr_SetString(PyExc_MemoryError, &message);


Is any inherent problem in doing this?

May it be a good idea to make it generic, like providing a
PyErr_MemoryError that could accept a message and a number, and stores
that number in the exception objects internals?

Thanks!

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/


More information about the Python-Dev mailing list