C++ 删除存储指向某些对象的指针的数组

C++ 删除存储指向某些对象的指针的数组,c++,C++,我正在数组a*a\u ptrs[3]中存储指向向量元素的指针。假设vec_A不会调整大小。因此,a_ptrs[i]将指向正确的元素 我的问题是: 假设A*A_ptrs[3]在A类B中声明。由于它不是使用“new”创建的,我猜我不需要在析构函数中删除它。我说的对吗 class A { public: int getNumber(); A(int val);

我正在数组
a*a\u ptrs[3]
中存储指向向量元素的指针。假设vec_A不会调整大小。因此,
a_ptrs[i]
将指向正确的元素

我的问题是:

假设A*A_ptrs[3]在A
类B
中声明。由于它不是使用“new”创建的,我猜我不需要在析构函数中删除它。我说的对吗

class A {
      public:                       
             int getNumber();            
             A(int val);
             ~A(){};
      private:
              int num;
};    
A::A(int val){
         num = val;
         };             
int A::getNumber(){
    return num;
};

 int main(){  
    int i  =0;
    int num;    
    std::vector<A> vec_A;
    for ( i = 0; i < 10; i++){
        vec_A.push_back(A(i));
        }

    A* a_ptrs[3];        
    a_ptrs[0] = &vec_A[0];        
    a_ptrs[1] = &vec_A[3];        
    a_ptrs[2] = &vec_A[5];

    for (i = 0; i<3; i++){
        std::cout<<"\n: a_ptrs[i].getNumber() = "<<a_ptrs[i]->getNumber();
    }        
    std::cout << "\nPress RETURN to continue...";
    std::cin.get();    
    return 0;
}
A类{
公众:
int getNumber();
A(int-val);
~A(){};
私人:
int-num;
};    
A::A(int-val){
num=val;
};             
inta::getNumber(){
返回num;
};
int main(){
int i=0;
int-num;
std::向量向量向量A;
对于(i=0;i<10;i++){
向量推回(A(i));
}
A*A_ptrs[3];
a_ptrs[0]=&vec_a[0];
a_ptrs[1]=&vec_a[3];
a_ptrs[2]=&vec_a[5];

对于(i=0;i是的,这是正确的。你不需要使用delete。唯一的问题是向量是否调整了大小,例如通过调用push\u back等-但是你在帖子中这样说了。

是的,这是正确的。你不需要使用delete。唯一的问题是向量是否调整了大小,例如通过调用push\u back等-但是你在帖子中这样说了

是,
delete
仅用于分配给
new

的变量是,
delete
仅用于分配给
new

Correct的变量,因为程序中没有动态内存分配

我的建议是使用vector.reserve()函数保留向量的大小,这将提高程序性能


基本上,当您向CArray(MFC)或std::vector添加元素时,它会重新分配必要的内存并复制元素,从而导致内存碎片并降低程序速度。

正确,因为程序中没有动态内存分配

我的建议是使用vector.reserve()函数保留向量的大小,这将提高程序性能


基本上,当您向CArray(MFC)或std::vector添加元素时,它会重新分配必要的内存并复制元素,从而导致内存碎片并降低程序速度。

当您需要删除数组时,请确保执行
删除[]foo;
,而不仅仅是
删除foo;
(数组删除与标量删除)。但是,正如前面指出的,不需要。当需要删除数组时,请确保执行
delete[]foo;
,而不仅仅是
delete foo;
(数组删除与标量删除)。但是,正如前面指出的,不需要,这里不需要。