我正在尝试使用 Person 数组指针来直接初始化数组。
我成功地为初始化列表中的每个元素使用了 new
运算符。但是,我很困惑,因为我正在考虑释放指针使用的内存,因为我使用了 new
关键字。
每当我使用 delete [] pp
时,程序都会崩溃,但它的工作就像下面粘贴的那样。
谁能给我讲讲?
#include<iostream>
#include<sstream>
using namespace std;
class Person
{
string lastName;
string firstName;
public:
Person(string fname, string lname) : firstName(fname),lastName(lname)
{
}
string output()
{
stringstream ostr;
ostr<<firstName<<" "<<lastName;
return ostr.str();
}
};
int main()
{
Person *pp[4] = {new Person("Yusuf","Tijjani"),new Person("Mubarak","Shettima"),new Person("Musty","Haruna"),new Person("Fatima","Suleiman")};
for(int i =0;i<4;++i)
cout<<pp[i]->output()<<endl;
cin.get();
return 0;
}
最佳答案
Person (*pp)[4]
是指向 4 个Person
数组的指针。Person *pp[4]
是指向Person
的 4 个指针的数组。
由于 pp
是一个局部指针数组,您不能删除[]
它:它在堆栈上。
相反,您需要删除
Person
的每个实例。
关于c++ - 要释放动态数组初始化时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968583/