attorianzo ha scritto:
Ad esempio in php quando voglio concatenare 3 stringhe faccio una unica, semplice istruzione.. tipo
$stringa= $stringa1.$stringa2.$stringa3."ciao";
Semplice ed efficace.. Possibile che in C non si possa fare con la stessa semplicità?
Il fatto è che la gestione della memoria in Php è diversa dal C...
in Php c'è il "raccoglitore della monnezza" ("garbage collector") che gestisce la memoria con una semplice regola:
Se non esistono più riferimenti a una variabile A allora posso distruggere A
In C invece la gestione della memoria è automatica per le variabili di scope e lasciata al programmatore per tutto il resto.
Quindi in Php è possibile fare
perchè l'interprete legge le stringhe "prova", " 1", " 2", " 3", " fine" alloca la memoria necessaria a ospitarle nello stack poi le concatena e visto che nel codice seguente non ci sono più riferimenti a esse... le distrugge, tenendo solo la stringa della concatenazione.
Invece in C rimarrebbero in memoria tutte le stringhe e oltretutto non esistendo più riferimenti a esse non si potrebbero più distruggere
memory leak, quindi un meccanismo simile sarebbe controproducente.
:-\
porco diodo...