2 elite guang elite_guang 于 2014.05.23 16:37 提问

c 语言的free()是不是自己级联释放空间?????

比如:
struct a{

char qq;

int *pt;
};

struct a *p_a=malloc(sizeof(struct a));
p_a->pt=malloc(sizeof(int)*100);

然后是:
free(p_a);

这样, p_a->pt 所指向的空间能否被释放掉?????????

2个回答

lym753024200
lym753024200   2014.05.23 17:47

不是,它只是释放free中参数所指的内存块,不释放这个内存块中某个可能为指针的地址引用的另一个内存块

oyljerry
oyljerry   Ds   Rxr 2015.01.24 14:20

需要自己手动释放,即先释放指向的,再释放自己

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!