上次malloc还不怎么懂,多谢
在潭浩强的书里,介绍链表时,增加一个结点就在creat函数中用malloc开辟一段区域,
但是
// void Example(void)
{
char *p = (char *)malloc(100 * sizeof(char));
}
在函数调用之后,指针p确实是已经消亡了,但是这并不是说申请的内存也跟着消亡了,这段内存还是存在,系统没有回收,但是这段内存也不能用,函数已经调用结束了。
如果在函数调用之后,这段内存不能用,那怎么建立链表啊???
搜索更多相关的解决方案:
malloc
----------------解决方案--------------------------------------------------------
在creat函数中,内存的申请后又写入了内容,这样不是就是在建立链表吗?
----------------解决方案--------------------------------------------------------
can used
----------------解决方案--------------------------------------------------------
这与运行环境有关,要知道,当发生函数调用时,数据放在栈中的,当函数返回后要弹栈,所以函数中的局部变量随之消亡。在这里,指针是局部变量,当函数返回后指针变量局不再存在,而动态申请的内存是在堆中分配的,是全局的,即使函数返回了,但是动态分配的存储单元仍然存在,如果程序员不显示的释放这段空间,那么当程序退出后由操作系统来完成内存的回收工作。
malloc();函数动态申请了一段空间,并将申请到空间的首地址作为函数的返回值返回。
----------------解决方案--------------------------------------------------------
谢谢
----------------解决方案--------------------------------------------------------