我读这样的: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