与C编程有关。
假设我这样做:
struct myStruct
{
pthread_mutex_t myMutex;
sem_t mySemaphore;
};
`
我在malloc中调整了适当的大小并初始化了Semaphore:
myStruct *create_myStruct()
{
myStruct *temp;
temp = (myStruct *) malloc(sizeof(myStruct));
sema_init(&sema, 0, 0);
pthread_mutex_init(&(temp->myMutex), NULL);
return temp;
}
我是否还需要手动销毁信号量或只是免费拨打电话?
答案 0 :(得分:4)
你需要销毁信号量的互斥锁和,这需要在之前发生你释放内存。否则,您有资源泄漏,并且您的程序具有未定义的行为。
您应该在心理上区分对象和它们所代表的状态,以及另一方面存储对象的存储器。没有人知道另一个,并且都需要单独设置和拆除(并且以相反的顺序)。