- 论坛徽章:
- 0
|
从内到外释放就可以了。
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct tgentry
{
char* attrName;
}entry;
entry* attr(entry* node)
{
char *tmpAttr = (char*)malloc(100);
printf("tmpAttr=%p\n",tmpAttr);
/*do something with tmpAttr*/
node->attrName = tmpAttr;
printf("node->attrName=%p\n",node->attrName);
memset(node->attrName ,0x00,100);
strcpy(node->attrName ,"testhello");
printf("node=%p\n",node);
return node;
}
entry* visitEntry()
{
entry *tmp = (entry*)malloc(100);
printf("tmp01=%p\n",tmp);
/*do something with tmp*/
attr(tmp);
printf("tmp02=%p\n",tmp);
return tmp;
}
int main( int argc,char *argv[] )
{
entry *tmp;
tmp=visitEntry();
printf("%s\n",tmp->attrName);
printf("tmp03=%p\n",tmp);
printf("tmp->attrName=%p\n",tmp->attrName);
free(tmp->attrName);
free(tmp);
return 0;
}
运行结果如下:
tmp01=003E3D50
tmpAttr=003E2430
node->attrName=003E2430
node=003E3D50
tmp02=003E3D50
testhello
tmp03=003E3D50
tmp->attrName=003E2430 |
|