相关疑难解决方法(0)

为什么C++程序员应该尽量减少"新"的使用?

在使用std :: list <std :: string>时偶然发现Stack Overflow问题内存泄漏与std :: string,其中一条评论说:

停止使用new这么多.我看不出你在任何地方使用新的任何理由.您可以使用C++中的值创建对象,这是使用该语言的巨大优势之一.您不必在堆上分配所有内容.不要像Java程序员那样思考.

我不太确定他的意思是什么.为什么要尽可能经常地用C++中的值创建对象,它在内部有什么区别?我误解了答案吗?

c++ heap memory-management c++-faq new-operator

833
推荐指数
13
解决办法
12万
查看次数

RAII和C++中的智能指针

在使用C++的实践中,什么是RAII,什么是智能指针,如何在程序中实现这些以及将RAII与智能指针一起使用有什么好处?

c++ smart-pointers raii

189
推荐指数
4
解决办法
6万
查看次数

使用基类作为指针的安全容器

所以我在构造函数中查看了这个问题内存分配异常,我的老板在他的漂亮答案中说明析构函数不会被调用.

这让我想知道,

如果我要写

struct XBase
{
    int* a;
    char* b;
    float* c;

    XBase() : a(nullptr), b(nullptr), c(nullptr) {} 
    ~XBase()
    {
        delete[] a; delete[] b; delete[] c;
    }   
};
Run Code Online (Sandbox Code Playgroud)

struct X : XBase
{
    X() {
        a = new int[100];
        b = new char[100];
        c = new float[100];
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,如果c失败的分配(抛出异常),那么XBase将调用析构函数,因为已经构造了基类.

没有内存泄漏?

我对么?

c++

11
推荐指数
1
解决办法
164
查看次数