指针数组,共享对象

时间:2011-04-01 01:04:00

标签: c++ visual-c++ memory-management memory-leaks

我有一个数组列表,其中包含指向现有静态对象的指针数组。不知何故,它设法泄漏了大量内存。

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 !!

2 个答案:

答案 0 :(得分:3)

我想你可能想做

list = new Fruit * [10];

如果list应该是Fruit指针的数组。以下内容:

list = new Fruit[10];

使用默认构造函数为10个新Fruit个对象分配内存,而不是10个指向Fruit个对象的指针。

答案 1 :(得分:0)

我想这行

list = new Fruit[10];

是一个拼写错误,而*则丢失了。否则代码将无法编译。 假设这一点,你在这里展示的代码没有任何问题。 (技术上 - 人们肯定不同意设计。) 问题在于其他地方,可能是自由空间舞台的腐败。 (尝试在valgrind下运行代码,看看它告诉你什么。)