Thanks :-D

BTW, Symbols in sclang work the same way. Also, they are frequently used in scripting languages. In this context, this is also referred to as "string interning", see https://en.wikipedia.org/wiki/String_interning

Christof

On 22.02.2024 15:38, Pierre Alexandre Tremblay wrote:
This is by far the best explanation of symbols I’ve read, ever.

Thanks!

On 22 Feb 2024, at 13:41, Christof Ressi <[email protected]> wrote:

Hi,

Pd symbols are immutable and permanent. `gensym("foo")` looks if the symbol 
"foo" already exists; if yes, it just returns it, otherwise it creates a new symbol, adds 
it to the global symbol table and finally returns it.

You must never attempt to free a symbol!

```
t_symbol **x_weights_arrays;
t_symbol *x_biases_array;
```
Here you must only free `x_weights_array`, which is an array of `t_symbol*`, 
but not the `t_symbol*` elements themselves.

---

Side note: since symbols are unique and persistent, they can be compared *by 
address*. In other words, two symbols are equal if they have the same address. 
This is different from ordinary C-strings which may reside at different memory 
locations and thus need to be compared with `strcmp()` (or equivalent 
functions).

Christof

On 22.02.2024 10:19, Alexandros Drymonitis wrote:
I have a data structure with a symbol and an array of symbols that store array 
names defined as:

```
t_symbol **x_weights_arrays;
t_symbol *x_biases_array;
```

When I'm done with them, I want to free the memory, but calling 
free(x_biases_array) doesn't seem to work, and once called, as soon as I try to 
do something else in Pd (like unlock the patch and choose an object), Pd 
crashes.

I have narrowed down the error to freeing these symbols, and I'm sure the crash 
is not caused by something else. I scanned m_pd.h to see if there is a function 
to free t_symbol memory, but didn't seem to find anything. This might be 
something obvious for C-savvy people, but I'm not one, so any advice is welcome.




_______________________________________________
Pd-dev mailing list
[email protected]
https://lists.puredata.info/listinfo/pd-dev


_______________________________________________
Pd-dev mailing list
[email protected]
https://lists.puredata.info/listinfo/pd-dev



_______________________________________________
Pd-dev mailing list
[email protected]
https://lists.puredata.info/listinfo/pd-dev

Reply via email to