我有一个使用(非静态)信号量的类。
在这个类的析构函数中,我释放了动态分配的内存。
当我们仍然wait
获取信号量时,该类的对象不应被“破坏”。
我是否还需要在类'析构函数中使用sem_destroy
来确保信号量被终止?
答案 0 :(得分:0)
是。在C ++中,动态添加的对象不会被自动销毁,你应该用这样的指针销毁你创建的任何对象:
semaphore *S = ...
答案 1 :(得分:0)
如果不为信号量调用sem_destroy,则在释放信号量所在的内存时会隐式销毁它。如果您的信号量位于非共享内存中,则当进程调用exit或exec时,它们将隐式销毁信号量。如果信号量在共享内存中,那么在最后一个进程关闭后它就会被销毁。