我正在为我的项目使用抽象工厂设计模式。
CPattern * CObjectA::Create(void)
{
CPattern *p = new CPattern;
patternList.push_back (p);
return *p;
}
//Member variable
CPattern *pat = NULL;
pat = Obj.Create();
CObjectA 将删除在析构函数期间分配的空间。问题是,如果客户再次这样做:
pat = Obj.Create();
我会分配另一个空间并轻拍指向它。如果这被调用了几百次,我将继续创建空间而不分配它。
有没有办法在我为它分配另一个空间之前检查 pat 是否为空?
感谢您的帮助!
最佳答案
delete pat;
pat = Obj.Create();
更好的解决方案是使 pat
成为一个智能指针,当您重新分配给一个新对象时,它会自动删除该对象。
保持 patternList
最新是另一个问题。
关于c++ - 如何在分配更多内存空间之前检查指针是否为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12632273/