相关疑难解决方法(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万
查看次数

stl矢量内存管理

我使用的是borland 2006 c ++,并且有以下代码.我正在使用向量,并且无法理解为什么没有调用析构函数.

基本上我有A级

class A
{
private:
    TObjectList* list;
    int myid;
public:
 __fastcall A(int);
 __fastcall ~A();
};

__fastcall A::A(int num)
{
    myid = num;
    list = new TObjectList();

}

__fastcall A::~A()
{
    delete list;
}

int main(int argc, char* argv[])
{
    myfunc();
    return 0;
}

void myfunc()
{
    vector<A*> vec;
    vec.push_back(new A(1));
    vec.push_back(new A(2));
}
Run Code Online (Sandbox Code Playgroud)

根据我读到的,当变量vec超出myfunc()中的范围时,它应该破坏其包含的元素,因此应该调用A的析构函数.我在~A()处有一个断点,但从未被调用过,我也尝试过resize(),擦除方法

TIA

c++

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

标签 统计

c++ ×2

c++-faq ×1

heap ×1

memory-management ×1

new-operator ×1