Linux栈空间检测代码

今天终于知道linux栈空间了。因为写了个简单程序,可以让linux的栈空间耗尽,然后出现core dumped,即栈溢出

代码如下:

#include <stdio.h>

void overFlow()

{

long i;

printf("&i  : %p\n",&i);

overFlow();

}

int main()

{

OverFlow();

}

运行程序 ./out > out.log

栈地址是从高到低,所以用第一个减去最后一个地址,就能得到栈空间

我用python算出

$python

>>> (0x7fffe4c974cc - 0x7fffe449be2c)*1.0/1024/1024

7.982086181640625

可见是8M

使用ulimit -s可得到8192, 与程序结果一致

时间: 2024-10-19 22:08:42

Linux栈空间检测代码的相关文章

linux 磁盘空间检测

#!/bin/bash #[email protected] mntlist="/dev/sda3 /dev/sda1 " for mt01 in $mntlist do #echo $mt01 usedpct=$(df -h $mt01 | awk '{print $5}' | grep -v Use | cut -d "%" -f1 -) box=$(uname -a | awk '{print $2}') case $usedpct in [0-9]) mnt

Linux下c++程序内存泄漏检测代码范例

Linux下对于程序内存泄漏检测的方法很多,最常用的的莫过于使用valgrind工具.但是valgrind相当于让程序在虚拟机中运行,会带来较大的系统资源开销,还会对程序的运行效率产生较大影响,对于那种资源占用大的程序,如果需要长时间运行才能暴露的泄漏问题,它就显得不太好用. linux下的c++程序中自己实现一个轻量级的泄漏检测代码其实是比较方便的,下面我就给出一个简单的范例,并作简单的说明.当然,我们还是应该提倡使用共享指针,用共享指针自动管理内存可以避免内存泄漏这样的不必要的麻烦. 基本原

0xC0000005;Access Violation(栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大小为1M)

写C/C++程序最怕出现这样的提示了,还好是在调试环境下显示出来的,在非调试状态就直接崩溃退出. 从上述汇编代码发现在取内存地址 eax+38h 的值时出错, 那说明这个地址非法呗, 不能访问, 一般是访问了空指针引起的. 直接调用QList::append()方法也会出错了, 此时汇编也指向的是在读取内存 ebp-8 时出错. 这段代码运行背景是在栈上申请了很多缓冲区,然后缓冲区在不停添加内容, 直到某一阶段程序崩溃. 由于栈区空间很宝贵, linux上栈区空间默认为8M,vc6下默认栈空间大

linux查看修改线程默认栈空间大小(ulimit -s)

linux查看修改线程默认栈空间大小 ulimit -s 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> &l

Linux 常用 性能 检测 命令 解释

1.uptime [[email protected] ~]# uptime 15:08:15 up 98 days,  4:19,  2 users,  load average: 0.07, 0.29, 0.14 当前时间   系统运行至今的时间   多少用户登录当前系统   分别是1分钟,5分钟,15分钟前至今的负载情况 load average是队列平均长度,在队列中等待执行的进程数量 该值越低,说明进程更有可能立即被CPU处理,相反越高,说明进程更有可能阻塞 该命令可以检查服务器负载是

linux内核空间与用户空间信息交互方法

linux内核空间与用户空间信息交互方法 本文作者: 康华:计算机硕士,主要从事Linux操作系统内核.Linux技术标准.计算机安全.软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室.如果需要可以联系通过[email protected]联系他. 摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息.Linux提供了多种方法可以用来完成这些任务.本文总结了各种常用的信息交换方法,并用简单的例子

FreeRTOS 查询任务 剩余的栈空间的 方法

From:http://www.cnblogs.com/suozhang/p/5301054.html 1.官方文档提供了   函数  用来查询  任务 剩余   栈 空间,首先是看官方的文档解释(某位大神 翻译 的 官方 文档.) 参数解释:     xTask:被查询任务的句柄——欲知如何获得任务句柄,详情请参见API 函数xTaskCreate()的参数pxCreatedTask.如果传入 NULL 句柄,则任务查询的是自身栈空间的高水线. 返回值: 任务栈空间的实际使用量会随着任务执行和

【转帖】测试栈空间的大小

测试栈空间的大小 https://blog.csdn.net/lyh__521/article/details/50115943 比如局部变量是保存在栈空间中的,今天突然在想栈的上限是多大呢,什么时候才会栈溢出? ulimit 命令linux下使用ulimit 命令可以查看系统的很多上限值. ulimit -a 查看所有 ulimit -s 查看栈空间的大小 可以看到系统设置栈的上限是8M 测试现在我们写个程序测试一下 两种方法: 1.第一种方法:最简单的是在函数或直接在main()函数里定义多

初学JAVA——栈空间堆空间的理解

1.Person pangzi;    //这是在“开拓空间”于栈空间 pangzi=new Person();    //这是赋值于堆空间 上两步就是在做与空间对应的事. 2.值类型直接存入栈空间,如AF,引用类型存入堆空间,在栈空间存有“索引地址”,如当需要B时,在栈空间寻找“索引地址”后对应寻找堆空间的“详细内容”. 故,值类型“快”,引用类型“灵活”. 例String S = “ABCDEFG........Z",则S对应栈空间,“ABCDEFG........Z"对应堆空间.