【发布时间】:2013-03-19 02:04:25
【问题描述】:
struct Package_Node
{
int bar_code;
float package_weight;
Package_Node *next_packaged;
};
struct Key_Node
{
int key;
Package_Node *next_package;
};
for(int i=0; i<3; i++)
{
if(keyMain[i].next_package==NULL)
{
continue;
}
if(keyMain[i].next_package!=NULL)
{
nPointer3=keyMain[i].next_package;
nPointer4=keyMain[i].next_package;
while(nPointer3)
{
nPointer4=nPointer4->next_packaged;
delete[] nPointer3;
nPointer3=nPointer4;
}
}
}
keyMain 由给定结构key_node 描述的数组。
Key main 本身是一个动态数组,但为了代码的缘故,我将其显示为一个静态数组。
假设数组有 3 个索引,0,1,2,每个索引包含一个单独的链表。现在我正在尝试删除每个链接列表,但似乎有些正在被删除,而有些则没有。
如何解决这个问题?
【问题讨论】:
-
你能显示nPointer3指向的内存被分配的行吗?
-
你为什么使用
delete []作为Package_Node元素?如果它们是数组,那么数组的其余部分呢? -
@ChrisDodd
Package_Node不是数组。它是一个链表。Key_node然而是一个数组。 -
@Digikata 我不确定你的问题是什么,但如果我理解正确,
nPointer3是一个指向package_node的指针。我使用package_node *nPointer3,然后使用nPackage = new Package_node创建分配的动态内存 -
如果您使用 new Package_Node 一次分配一个节点,您将获得使用数组删除运算符 delete [] 释放内存的未定义行为.从单数 new 运算符分配的内存应使用单数 delete 释放。同样,数组 delete 只能与数组 new 运算符 new Type[n] 配对。
标签: c++ dynamic-arrays