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]考虑到提供的上下文,code>似乎是首选方法。当您以**
结束时,您几乎总是做错事,或者尝试得太过努力。您也可以使用水果*列表[10]
并跳过新建和删除。我真的很抱歉,我忘了写(*)。无论如何,这不是代码的问题所在。它仍然崩溃。
list = new Fruit[10];