stavo leggendo questo: http://en.wikipedia.org/wiki/Thread_safetysicurezza Discussione con il mucchio-memoria allocata
è la seguente funzione thread-safe?
void foo(int y){
int * x = new int[50];
/*...do some stuff with the allocated memory...*/
delete [] x;
}
Nell'articolo si dice che per essere thread-safe è possibile utilizzare solo le variabili dallo stack. Veramente? Perché? Le chiamate successive della funzione sopra non allocano la memoria altrove?
Modifica: Ah. Sembra che ho letto male questa parte dell'articolo:
Una subroutine è rientrante, e quindi thread-safe, se
- le uniche variabili che utilizza sono dalla pila
(l'ho preso come valore
Una subroutine è rientrante, e quindi thread-safe, se e solo se
- le uniche variabili che usa sono dalla pila
, che secondo le risposte qui sotto, non è il caso)
Utilizzare 'delete []' per matrici non 'delete' –
@Brian: Woops - grazie. Ho aggiunto la parte dell'array dopo che avevo già digitato la funzione, in modo da chiarire che stavo allocando la memoria in modo dinamico, ma ho dimenticato di aggiungere []. +1 :) – Cam
È incredibile vedere l'uso diffuso di wikipedia come riferimento per i concetti di programmazione :) – ch0kee