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;
...
}