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
仅用于分配给newCorrect的变量,因为程序中没有动态内存分配
我的建议是使用vector.reserve()函数保留向量的大小,这将提高程序性能
基本上,当您向CArray(MFC)或std::vector添加元素时,它会重新分配必要的内存并复制元素,从而导致内存碎片并降低程序速度。正确,因为程序中没有动态内存分配
我的建议是使用vector.reserve()函数保留向量的大小,这将提高程序性能
基本上,当您向CArray(MFC)或std::vector添加元素时,它会重新分配必要的内存并复制元素,从而导致内存碎片并降低程序速度。当您需要删除数组时,请确保执行删除[]foo;
,而不仅仅是删除foo;
(数组删除与标量删除)。但是,正如前面指出的,不需要。当需要删除数组时,请确保执行delete[]foo;
,而不仅仅是delete foo;
(数组删除与标量删除)。但是,正如前面指出的,不需要,这里不需要。