C++监测资源泄漏(二) ---- Linux 进程内存布局
2011-04-08 15:54
281 查看
前文中给出了一种判断对象在内存中的静态数据区、堆还是栈上的判断方法,但必须根据各操作系统的部署才能分析其可行性。
首先,对于栈的判断是没有问题的,因为我们是根据在构造函数中的局部变量的距离来判断的,这个应该在任何一个操作系统中都应该是准确的,下面主要分析堆和静态存储区是否可能混淆。
1. Linux
在linux系统中,进程的步骤如下
由于静态存储区在堆的下面,而堆是向上增长的,所以无论如何某个堆到堆内某个地址的距离都不可能比到静态数据区(BSS或DATA)内某个地址的距离短,所以这种情况下,通过距离判断是正确的。
暂时还没有找到pthread线程模型的详细资料,在多线程情况下是否是正确的,因为前文中的代码的堆参考位置是同一个,如果pthread为每个线程分配独立的堆空间还可能会有问题。但是,若堆是在上图中标识的区域中进行局部分块,而不是直接到0xBFFFF FFFF以上的空间中的话也是没有问题的,事实应该也是如此,待考证。
首先,对于栈的判断是没有问题的,因为我们是根据在构造函数中的局部变量的距离来判断的,这个应该在任何一个操作系统中都应该是准确的,下面主要分析堆和静态存储区是否可能混淆。
1. Linux
在linux系统中,进程的步骤如下
由于静态存储区在堆的下面,而堆是向上增长的,所以无论如何某个堆到堆内某个地址的距离都不可能比到静态数据区(BSS或DATA)内某个地址的距离短,所以这种情况下,通过距离判断是正确的。
暂时还没有找到pthread线程模型的详细资料,在多线程情况下是否是正确的,因为前文中的代码的堆参考位置是同一个,如果pthread为每个线程分配独立的堆空间还可能会有问题。但是,若堆是在上图中标识的区域中进行局部分块,而不是直接到0xBFFFF FFFF以上的空间中的话也是没有问题的,事实应该也是如此,待考证。
相关文章推荐
- [转]linux进程内存布局
- 使用shell 脚本对 Linux 系统进程的CPU使用率与内存资源进行监控
- linux进程内存布局(转)
- 统计进程资源----Linux Pmap 命令:查看进程用了多少内存
- Linux中查看进程占用内存和系统资源情况的命令
- linux进程内存布局及内存管理函数总结
- linux下C++进程内存增长问题的分析
- LINUX程序(进程)在内存中的布局
- Linux 进程地址空间 && 进程内存布局
- 《coredump问题原理探究》Linux x86版6.1节C++风格数据结构内存布局之无成员变量的类
- linux系统进程的内存布局
- linux系统进程的内存布局
- Linux 下使用C++监测某一进程的状态
- Linux进程的内存布局
- linux 下应用编程进程内存资源的限制
- 计算Linux系统和进程和线程的CPU及内存使用率(c++源码)
- Linux X86-64 进程内存空间布局
- Linux下如何查看哪些进程占用的CPU内存资源最多
- linux进程内存布局
- linux系统进程的内存布局