free struct,内部指针并不free

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

C的struct有大缺陷,其内存管理就是一个问题,free掉一个struct结构的指针,如果其struct内部有指针,该指针内容不释放,这个在调用别人写好的struct接口时,会相当麻烦,这就要求对方除了提供struct接口外,还提供额外的内存管理支持,否则很容易出现问题,在这点上,C++的构造函数、析构函数明显表现要好的多,下面是一个free struct的C的例子:

#include

#include

struct test

{

char* p_ch;

int ix;

};

int main(int argc, char *argv[])

{

struct test *p_test;

p_test = malloc(sizeof(struct test));

p_test->p_ch = malloc(20);

char *p_ch = "Hello!";

strcpy(p_test->p_ch, p_ch);

p_ch = p_test->p_ch;

printf("p_test->p_ch:\t%s\n", p_test->p_ch);

free(p_test->p_ch); //如果注释掉这行,p_ch值仍为“Hello!”

free(p_test);

printf("after free(p_test), p_ch:\t%s\n", p_ch);

system("PAUSE");?

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航