czytałem to: http://en.wikipedia.org/wiki/Thread_safetybezpieczeństwo Temat z sterty przydzielona pamięć
jest następująca funkcja wątku bezpieczny?
void foo(int y){
int * x = new int[50];
/*...do some stuff with the allocated memory...*/
delete [] x;
}
W artykule napisano, że do zachowania wątków można używać tylko zmiennych ze stosu. Naprawdę? Czemu? Czy kolejne wywołania powyższej funkcji nie przydzielają pamięci w innym miejscu?
Edytuj: Ah. Wygląda na to, że błędnie zinterpretowali tę część artykułu:
Podprogram jest wklęsłego, a tym samym wątku bezpieczny, jeśli
- jedynych używanych w nim zmiennych są ze stosu
(Wziąłem to w znaczeniu
Podprogram jest powtarzalny, a więc bezpieczny dla wątków, jeśli i tylko wtedy
- jedyne zmienne wykorzystywane przez to ze stosu
, który według poniższych odpowiedzi, nie jest)
Użyj 'delete []' dla tablic nie 'delete' –
@Brian: Woops - thanks. Dodałem część tablicową po tym, jak już wypisałem tę funkcję, aby było jeszcze bardziej jasne, że dynamicznie przydzielam pamięć, ale zapomniałem dodać []. +1 :) – Cam
Zdumiewające jest rozpowszechnianie użycia Wikipedii jako referencji do programowania pojęć :) – ch0kee