gpt4 book ai didi

c++ - 要释放动态数组初始化时程序崩溃

转载 作者:行者123 更新时间:2023-11-30 02:27:13 29 4
gpt4 key购买 nike

我正在尝试使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com