0
與C編程有關。如果我在malloc'd結構中聲明一個信號量,並且釋放()結構,我仍然需要銷燬信號量?
想我做到這一點:
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;
}
我還需要手動銷燬信號量或只是免費打電話會做什麼?
謝謝。我猜信號量的內部結構也包含指針。 – Henry
對於任何非平凡的結構都有一個破壞函數通常是一個好主意。 –
@亨利:內部結構是否包含指針並不重要,問題是信號量是一個資源,它的接口說它需要釋放。它可能只包含一個小整數(如文件描述符是一個小整數),操作系統使用該整數來標識該資源。它可能不包含對資源的任何類型的引用,但OS在某種結構中保存其地址,並在您銷燬時將其刪除。它可能沒有需要釋放的資源,而'sem_destroy'是一個無操作的,但是爲了允許它做某事的實現,你必須調用它。 –