堆空间和栈空间

来自Shiyin's note
Shen讨论 | 贡献2022年3月9日 (三) 12:16的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索
  • 栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。
  • 堆区(heap):一般是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收,值得注意的是他与数据结构的堆是两回事,分配方式倒是类似于数据结构的链表。

[1]


  1. 通过命令 ulimit -s 查看linux的默认栈空间大小,默认情况下 为10240 即10M
  2. 通过命令 ulimit -s 设置大小值 临时改变栈空间大小:ulimit -s 102400, 即修改为100M
  3. 可以在/etc/rc.local 内 加入 ulimit -s 102400 则可以开机就设置栈空间大小
  4. 在/etc/security/limits.conf 中也可以改变栈空间大小:
#<domain> <type> <item> <value>
* soft stack 102400

重新登录,执行ulimit -s 即可看到改为102400 即100M

ulimit

  • ubutun下用wget下载一个大文件出错,s段错误(核心已转储),晚上说解决方案就是ulimit -c和 ulimit -s 设置为unlimited,试验了一下有效果。ulimit -a可以查看所有的用户限制