【发布时间】:2017-01-31 22:24:18
【问题描述】:
我正在尝试使用 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;
}
【问题讨论】:
-
你需要对数组中的东西调用delete,而不是数组本身。
-
你真正需要的是停止使用
new。 -
好的。我尝试了这行代码,它可以工作,释放它。 'for(int i=0;i
-
怎么样?如果没有初始化中的 new,代码将无法编译。 @juanchopanza
-
@Kinyo356
Person pp[4] = {Person("Yusuf","Tijjani"), Person("Mubarak","Shettima"), Person("Musty","Haruna"), Person("Fatima","Suleiman")};
标签: c++ arrays pointers memory-management