我讀這樣的:http://en.wikipedia.org/wiki/Thread_safety線程安全與堆分配的內存
是下面的函數是線程安全的?
void foo(int y){
int * x = new int[50];
/*...do some stuff with the allocated memory...*/
delete [] x;
}
在文章中說它是線程安全的,你只能使用堆棧中的變量。真?爲什麼?上述函數的後續調用不會在其他地方分配內存嗎?
編輯:嗯。貌似我誤讀了文章的這一部分:
子程序是可重入的,因此線程安全的,如果
- 它使用的唯一變量是從堆棧
(我認爲它的意思是
子例程是可重入的,因此線程安全,如果個且僅當
- 它使用的唯一變量是從堆棧
,其根據下面的答案,情況並非如此)
使用'delete []'不是'delete'的數組# – 2010-05-17 00:01:41
@Brian:Woops - 謝謝。在我已經輸入了函數之後,我添加了數組部分,以便更清楚地說明我動態分配內存,但忘記添加[]。 +1 :) – Cam 2010-05-17 00:03:44
看到維基百科的傳播使用作爲編程概念的參考,令人驚訝:) – ch0kee 2013-07-31 18:43:48