我有以下结构(简化):
class myType
{
static char* data;
//more private data here
public:
//public interface here
};
data是所有实例之间共享的资源myType,它指向动态分配的内存(由其中一个实例在初始化时分配)。
到目前为止,一切都很好。当我需要释放data. 引用计数在这里不是一个解决方案,因为在某个执行点没有单个实例是有效且可能的情况myType- 稍后可以创建一个新实例 - 因此data必须持续存在。
我需要在驱动程序卸载时释放该内存,但卸载与myType对象的实际销毁无关,因此我被迫data手动释放。这是可以接受的,但是data(并且应该)private并且无法从卸载处理程序访问。当然,我可以在里面创建一个staticandpublic destroy函数,myType但这似乎不对——毕竟我不需要public初始化器,那么为什么我需要一个来释放内存呢?不应从外部myType实例访问该数据。
我将不胜感激有关该主题的任何见解。