C++ 指向共享对象的指针数组

C++ 指向共享对象的指针数组,c++,visual-c++,memory-management,memory-leaks,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]; } } 它似乎要崩溃了 救命 我想你可能想 list = new Fruit * [10]; 如果列

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

Fruit fruits[20];
Fruit **list;

void addFruites()
{
    list = new Fruit*[10];
    for(int i=0; i<10; i++)
    {
        list[i] = &fruits[i];
    }
}
它似乎要崩溃了


救命

我想你可能想

list = new Fruit * [10];
如果
列表
应该是
结果
指针的数组。以下是:

list = new Fruit[10];
正在使用默认构造函数为10个新的
Fruit
对象分配内存,而不是10个指向
Fruit
对象的指针。

我想这行

list = new Fruit[10];
是一个打字错误,并且缺少一个
*
。否则代码将无法编译。 假设这样,这里显示的代码没有问题。 (从技术上讲,人们肯定会不同意这个设计。) 问题在别处,可能是自由空间领域的腐败。
(试着在valgrind下运行代码,看看它能告诉你什么。)

如果你知道你需要10个元素,为什么要动态分配呢?@Bo Persson我想@user686776是有原因的。我同意只声明
水果*list[10]似乎是首选方法。当您以
**
结束时,您几乎总是做错事,或者尝试得太过努力。您也可以使用
水果*列表[10]
并跳过新建和删除。我真的很抱歉,我忘了写(*)。无论如何,这不是代码的问题所在。它仍然崩溃。
list = new Fruit[10];