我刚开始研究 Pthreads,有人可以向我解释为什么它Example 1
是危险的,而它Example 2
是安全的吗?提供什么(int*)malloc(sizeof(int))
?
示例 1
int *globalptr = NULL;
// shared ptr
void *foo1 ( void *ptr1 )
{
int i = 15;
globalptr = &i; // ??? dangerous!
...
}
void *foo2 ( void *ptr2 )
{
if (globalptr) *globalptr = 17;
...
}
示例 2
int *globalptr= NULL;
// shared ptr
void *foo1 ( void *ptr1 )
{
int i = 15;
globalptr =(int*)malloc(sizeof(int));
// safe, but possibly memory leak;
// OK if garbage collection ok
}
void *foo2 ( void *ptr2 )
{
if (globalptr) *globalptr = 17;
...
}