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