[PD-dev] trying to understand class_new

Christof Ressi info at christofressi.com
Tue Mar 24 13:49:53 CET 2020


I think a stack of 16 kB should be enough, but watch out for certain 
objects that might do large stack allocations, e.g. [sigmund~]. A modern 
OS usually has a stack size of at least 1 MB...

Regarding heap memory, you could get a rough idea by writing a small 
libpd test program on your Desktop with Pd's memory debug option or some 
external memory debugging tool like valgrind.

Also don't forget that the code itself also has to be loaded into 
memory. Then there are of course the actual Pd patches, which also need 
memory.

Finally, note that depending on the actual memory allocator, memory 
usage might not be deterministic. There are things like heap 
fragmentation to look out for. Pd might do heap allocations repeatedly 
during run time, e.g. [vline~] or any list larger than 100 atoms, and 
with such a small heap, fragmentation is very likely. One bigger 
allocation and boom - you're basically out of memory.

I don't know whether it's much fun to use Pd in such a constrained 
environment. Sound very brittle to me... You might be better of with an 
actual signal processing library, where you can control every aspect of 
your program.

Is there anyone who has actually used or tried to use libpd under such 
extreme memory constraints and can share their experience?

Christof

On 24.03.2020 11:49, Boštjan Jerko wrote:
> Do you know what are the minimum values for the stack and heap? At least rough estimation.
>
> B.
>
>> On 24 Mar 2020, at 11:30, Christof Ressi <info at christofressi.com> wrote:
>>
>> Check how much memory Pd is using. I mean, a 16 kB stack and 130 kB heap is still pretty small... (if those hex numbers mean bytes). Pd hasn't really been designed to run on microcontrollers ;-). Anyway, have a look at m_memory.c, there are some heap memory debug options, in case your developer tools don't provide this.
>>
>> Christof
>>
>> On 24.03.2020 09:25, Boštjan Jerko wrote:
>>> I don’t use PDINSTANCE, but after checking some online stuff I thought maybe the size of the stack is the problem so I’ve changed it from 0x400 to 0x4000 and heap size from 0x200 to 0x2000, but no success.
>>> Still - I guess there is something going on with the memory so I’ll be checking this some more.
>>>
>>>
>>
>>
>> _______________________________________________
>> Pd-dev mailing list
>> Pd-dev at lists.iem.at
>> https://lists.puredata.info/listinfo/pd-dev





More information about the Pd-dev mailing list