0

与C编程有关。

假设我这样做:

struct myStruct
{
    pthread_mutex_t myMutex;
    sem_t mySemaphore;
};

`

我 malloc 适当的大小并初始化信号量:

myStruct *create_myStruct()
{
    myStruct *temp; 

    temp = (myStruct *) malloc(sizeof(myStruct));
    sema_init(&sema, 0, 0);
    pthread_mutex_init(&(temp->myMutex), NULL);
    return temp;
}

我还需要手动销毁信号量还是只调用 free 就可以了?

4

1 回答 1

4

您需要销毁互斥锁​​和信号量,这需要在释放内存之前发生。否则你有资源泄漏,你的程序有未定义的行为。

一方面,你应该在心理上区分对象和它们所代表的状态,另一方面,对象存储在其中的内存。双方都不知道对方,两者都需要单独设置和拆除(并且以相反的顺序)。

于 2012-11-01T13:08:33.233 回答