c++ - 如何在分配更多内存空间之前检查指针是否为 NULL?

标签 c++

我正在为我的项目使用抽象工厂设计模式。

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/

相关文章:

C++ 绘制 Mandelbrot 集,性能不佳

c++ - Java 到 C++ UTC 时间 - 以秒为单位查找 Utc 时区时间偏移

c++ - 访问匿名子对象 C++ (cout)

c++ cgi app调用其他程序失败

c++ - 将 C++ 11 的 for-range 语法用于顺序对的方法?

c++ - 反向字符串脚本给出运行时错误

c++ - 使用update()函数查看应用程序更改时出现问题

c++ - 为什么指向char的指针仅获得第一个字符?

c++ - 如何准确定位程序崩溃的位置

c++ - 当程序在 Windows 中使用 C++ 运行时,如何监听/识别?