[PD-dev] PD memory free on quit

Jamie Bullock jamie at postlude.co.uk
Wed Jan 25 10:40:10 CET 2006


Hi,

I may be completely wrong about this, but it seems like PD runs the 'free' function for each object class on a canvas if a window is explicitly closed, but not if 'quit' is selected from the file menu (when there are canvases still open). 

For example, if I write a very simple object:

static t_class *mem_class;

typedef struct _mem {
  t_object  x_obj;
  char *memory;
} t_mem;

static void *mem_new(t_symbol *s, t_int argc, t_atom *argv)
{
  t_mem *x = (t_mem *)pd_new(mem_class);
  x->memory = malloc(10000);
  return (void *)x;
}

static void mem_free(t_mem *x){
        free(x->memory);
}

void mem_setup(void) {
  mem_class = class_new(gensym("mem"),
        (t_newmethod)mem_new,
        (t_method)mem_free, sizeof(t_mem),
        CLASS_DEFAULT, 0);
}

If I close the the canvas before quiting the memory gets free'd properly, whereas if I just select 'quit' whilst the canvas is still open, the memory is still reachable.

Is this by design, and if so why? Or am I doing something wrong? Alternatively, should I report it as a bug?

Pd version 0.40-0test01

Regards,

Jamie




More information about the Pd-dev mailing list