当前位置: 代码迷 >> C语言 >> 上次malloc还不怎么懂,多谢
  详细解决方案

上次malloc还不怎么懂,多谢

热度:340   发布时间:2006-07-19 17:55:51.0
上次malloc还不怎么懂,多谢

在潭浩强的书里,介绍链表时,增加一个结点就在creat函数中用malloc开辟一段区域,

但是

// void Example(void)
{
char *p = (char *)malloc(100 * sizeof(char));
}
在函数调用之后,指针p确实是已经消亡了,但是这并不是说申请的内存也跟着消亡了,这段内存还是存在,系统没有回收,但是这段内存也不能用,函数已经调用结束了。

如果在函数调用之后,这段内存不能用,那怎么建立链表啊???

搜索更多相关的解决方案: malloc  

----------------解决方案--------------------------------------------------------
在creat函数中,内存的申请后又写入了内容,这样不是就是在建立链表吗?
----------------解决方案--------------------------------------------------------
can used

----------------解决方案--------------------------------------------------------

这与运行环境有关,要知道,当发生函数调用时,数据放在栈中的,当函数返回后要弹栈,所以函数中的局部变量随之消亡。在这里,指针是局部变量,当函数返回后指针变量局不再存在,而动态申请的内存是在堆中分配的,是全局的,即使函数返回了,但是动态分配的存储单元仍然存在,如果程序员不显示的释放这段空间,那么当程序退出后由操作系统来完成内存的回收工作。
malloc();函数动态申请了一段空间,并将申请到空间的首地址作为函数的返回值返回。


----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------
  相关解决方案