我有一个数组列表,其中包含指向现有静态对象的指针数组。不知何故,它设法泄漏了大量内存。
Fruit fruits[20];
Fruit **list;
void addFruites()
{
list = new Fruit*[10];
for(int i=0; i<10; i++)
{
list[i] = &fruits[i];
}
}
直到现在,一切似乎都在发挥作用。但每当我想删除(列表)时:
delete []list;
它似乎崩溃了。
HELP !!
答案 0 :(得分:3)
我想你可能想做
list = new Fruit * [10];
如果list
应该是Fruit
指针的数组。以下内容:
list = new Fruit[10];
使用默认构造函数为10个新Fruit
个对象分配内存,而不是10个指向Fruit
个对象的指针。
答案 1 :(得分:0)
我想这行
list = new Fruit[10];
是一个拼写错误,而*
则丢失了。否则代码将无法编译。
假设这一点,你在这里展示的代码没有任何问题。
(技术上 - 人们肯定不同意设计。)
问题在于其他地方,可能是自由空间舞台的腐败。
(尝试在valgrind下运行代码,看看它告诉你什么。)