Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52196
  • 博文数量: 14
  • 博客积分: 1545
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-13 00:33
文章分类

全部博文(14)

文章存档

2011年(4)

2010年(10)

我的朋友

分类: LINUX

2010-06-12 11:49:31

   对一个进程来说,栈内存比较有限,用命令ulimit -s可以看出可用栈的大小,单位为KB,这个值是可扩展,现在我还不了解具体的扩展机制。
   全局变量、静态变量、局部变量、由数组获得的内存空间都是栈内存的资源,由数组获得的内存,在跳出作用域后会由系统自动回收。
   由malloc分配的内存是堆内存的资源,指针变量存放在栈内存中,指针指向的堆内存的地址。堆内存由malloc调用分配,并由free调用释放回收,如果没有用free调用显式释放,就算指针变量是局部变量,跳出作用域后,从栈中释放,但其指向的堆内存不会释放,不能被再利用,直到进程退出才能释放。
   指针可指向栈内存地址,也可指向堆内存地址,指向栈内存地址时,是由数组获得内存地址;指向堆内存地址时,是由malloc分配的内存地址。栈内存不可用free来释放。
   要申请一个大于栈内存的地址,只能使用堆内存,通过malloc获取。
阅读(1448) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~