博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈空间大小限制
阅读量:6225 次
发布时间:2019-06-21

本文共 1790 字,大约阅读时间需要 5 分钟。

一. 查看栈大小限制

不同系统的栈空间大小不同,可通过如下方法查看系统栈大小限制

cat /proc/1/limits

该文件列出了系统资源限制情况(ubuntu 16.04):

Limit                     Soft Limit           Hard Limit           Units     Max cpu time              unlimited            unlimited            seconds   Max file size             unlimited            unlimited            bytes     Max data size             unlimited            unlimited            bytes     Max stack size            8388608              unlimited            bytes     Max core file size        0                    unlimited            bytes     Max resident set          unlimited            unlimited            bytes     Max processes             7770                 7770                 processes Max open files            1048576              1048576              files     Max locked memory         65536                65536                bytes     Max address space         unlimited            unlimited            bytes     Max file locks            unlimited            unlimited            locks     Max pending signals       7770                 7770                 signals   Max msgqueue size         819200               819200               bytes     Max nice priority         0                    0                    Max realtime priority     0                    0                    Max realtime timeout      unlimited            unlimited            us

可知该系统中栈空间大小限制为8M。

二. 超过栈大小后段错误

#include 
int main(void){ char buf[8*1024*1024] = {
0}; printf("%c\n", buf[1024*1024]); return 0;}
Segmentation fault (core dumped)

三. 解决方案

对于超出栈大小的内存申请采用malloc或直接定义为全局变量。

#include 
#include
char buf[10*1024*1024]; int main(void){ memset(buf, 'c', sizeof(buf)); printf("%c\n", buf[1024*1024]); return 0;}

 

转载地址:http://vjyna.baihongyu.com/

你可能感兴趣的文章
awk学习笔记(1) - 简介及入门
查看>>
盖茨解释乔布斯讨厌微软原因
查看>>
安装平台centos6.5 + oracle 11g
查看>>
zabbix服务端安装(LNMP)
查看>>
Nginx 反向代理缓存效果测试
查看>>
centos 零碎学习小记 6.
查看>>
手机视频技术
查看>>
每到星期一就很没有精神
查看>>
Windows Server 2012 RDS系列:桌面虚拟化(4)
查看>>
分割超大Redis数据库例子
查看>>
apue.h源代码
查看>>
C#更改系统时间
查看>>
关于空指针NULL、野指针、通用指针
查看>>
云计算的价值
查看>>
如何选择嵌入式软件开发平台
查看>>
创建可扩展性系统-8-1
查看>>
android的第一个小程序,调用相机拍照,访问网络图片
查看>>
spark2.x由浅入深深到底系列六之RDD java api用JdbcRDD读取关系型数据库
查看>>
好未来谢华亮:AI 在教育行业中的应用
查看>>
10种排序算法总结
查看>>