嘿! 我知道问题的标题是非常可怕的,但我仍然无法用单行表达问题!通过使用free()whoes指针在指向结构的指针内释放内存
所以在这里,我去:
有一个数据指针说DataPtr它指向一个动态分配的内存和另一个结构的指针说StructPtr也指向一个动态分配的结构。
而这些都在另一个结构,比如OuterStructure。
有一个链接列表包含指向OuterStructure的指针。
struct StructONE
{
int a;
char b;
float c;
};
struct InnerStruct
{
char a;
int b;
};
struct StructTWO
{
int Num;
char * DataPtr;
struct InnerStruct * StructPtr;
};
struct LinkList
{
int NodeNum;
int NodeType; /* To Indicate Whether Pointer is of StructOne or StructTwo */
void * Ptr; /* This can be of type StructONE or StructTWO */
struct LinkList * Next;
};
LinkList * Start;
void main()
{
/* Structure Declarations */
InnerStruct * InnerStructure;
StructONE * OneStruct;
StructTWO * TwoStruct;
/* Fill up all the Structure */
InnerStructure= (InnerStruct *)calloc(100,sizeof(InnerStruct));
InnerStructure->a='a';
InnerStructure->b=5;
OneStruct= (StructONE *)calloc(100,sizeof(StructONE));
TwoStruct= (StructTWO *)calloc(100,sizeof(StructTWO));
TwoStruct->Dataptr=(char *) calloc(10,sizeof(char));
TwoStruct->StructPtr= InnerStructure;
/* Add these to Linked List
void Add_to_Linked_List(int NodeNum,int NodeType,void *ptr)
*/
Add_to_Linked_List(1,1,OneStruct);
Add_to_Linked_List(2,2,TwoStruct);
/* Everything is Okey Till Here.
Now When I want to delete a node from linked list,
First I have to release Memory pointed by DataPtr and StructPtr. */
DeleteNode(1);
} /* End of Main */
守则DeleteNode是这样的:
我该怎么办?
我知道我写的代码非常糟糕...但是必须写出这么复杂! :(
感谢您阅读这个问题,以及!
这也是一个很棒的方式!!谢谢Rosh! – Swanand 2010-11-19 04:16:08