Stavo guardando un video su CUDA e l'algoritmo Barnes-Hut in cui è stato affermato che è necessario posizionare un limite di profondità sull'albero per la GPU, e quindi l'idea mi è venuta in mente probabilmente facendo ricorsione nell'heap.Ricorsione con allocazione di memoria
Fondamentalmente, mi stavo chiedendo proprio questo: è possibile allocare memoria dall'heap e usarla come "stack" temporaneo in cui posizionare le chiamate di funzione per la funzione ricorsiva in questione per ritardare un overflow dello stack?
Se sì, come potrebbe essere implementato, dovremmo allocare lo spazio per un puntatore alla funzione? Presumo che implicherebbe l'archiviazione dell'indirizzo di funzione nell'heap, ma non ne sono troppo sicuro.
[modifica] Volevo solo aggiungere che questa è una domanda puramente teorica, e immagino che facendo ciò si rallenterebbe il programma una volta che si utilizza l'heap.
[modifica] Secondo la richiesta, il compilatore che sto usando è 4.8.4 GCC su Ubuntu 14.04 (64-bit)
C non definisce alcun meccanismo di questo tipo. Infatti, non definisce affatto "stack" o "heap", sotto questi o altri nomi. Sono nomi standard per gli aspetti della maggior * implementazione *, ma non rientrano nell'ambito di applicazione di C. Da un lato, ciò significa che è necessario specificare una particolare implementazione per ottenere una risposta utile. D'altra parte, significa anche che la stessa C non proibisce ciò che descrivi. In terzo luogo, non sono a conoscenza di alcuna implementazione che lo fornisce. –
@JohnBollinger Spiacente, non capisco cosa intendi quando dico che dovrò specificare una particolare implementazione. Intendi come la lingua stessa si occupa della memoria? Ho preso solo alcuni corsi introduttivi fino ad ora e non sono entrato in questo aspetto oltre alle basi su come il compilatore C (e credo che la maggior parte dei compilatori) gestisca la memoria. – Plopperzz
"Specificare un'implementazione particolare" significa restringere l'ambito della domanda a qualcosa come GCC 5/glibc su Linux o MS Visual C++ 2013 su Windows 10. –