
内存
春日绿野
这个作者很懒,什么都没留下…
展开
-
用户态进程地址空间映射
1、32位及64位地址空间分布2、proc maps文件解析查看用户进程地址映射可使用pmap命令,也可查看proc文件系统下的maps文件。下面是对proc下maps文件信息的解析。/proc/pid/maps显示进程映射了的内存区域和访问权限。对应内核中的操作集为proc_pid_maps_op,具体的导出函数为show_map。内核中进程的一段地址空间用一个vm_area_struc...转载 2019-06-12 18:32:27 · 1550 阅读 · 0 评论 -
C/C++字节对齐规则
字节对齐与具体编译器相关,但一般都遵循以下三条规则:(1)结构体变量的首地址能够被其最宽基本类型成员的大小所整除;(2)结构体每个成员相对于结构体首地址的偏移量,都是#pragma pack指定的数值和该成员大小中较小那个的整数倍。如有需要编译器会在成员之间加上填充字节;(3)结构体的总大小为结构体最宽基本类型成员大小与#pragma pack指定的数值中,较小那个的整数倍,如有需要编译器会...原创 2019-06-19 10:52:36 · 1197 阅读 · 0 评论 -
内存检测工具dmalloc在C++程序的运用
dmalloc是一款内存泄漏检测工具,主要用于检测C程序的内存泄漏问题。也可运用于C++程序内存泄漏的检测,但是无法打印出文件名和行号信息。该工具的下载地址为:http://dmalloc.com/下载最新版本v5.5.2到本地后,通过以下步骤应用到C++程序中。1、解压dmalloc-5.5.2.gz文件到本地路径2、编译前配置./configure --prefix=/home/wa...原创 2019-07-24 20:32:30 · 1572 阅读 · 0 评论 -
解决C/C++内存堆积问题思路
1、弄清问题现象及发送场景,尝试复现问题。使用内存检测工具进行排查,比如使用valgrind工具进行内存检测3、将现场出现内存泄露的进程生成coredump文件,使用gdb生成coredump文件valgrind不支持调试已运行程序5.4. Is it possible to attach Valgrind to a program that is already running?...原创 2019-08-06 18:05:37 · 3424 阅读 · 0 评论 -
regex_t型智能指针引起的内存泄漏问题分析
我们知道,使用C++智能指针,可以省去我们在申请内存后需要释放对应内存的操作。比如,定义一个int型的shared_ptr并申请一块内存shared_ptr(int) pint(new int),如果给pint重新赋值,或者出pint的作用域,那么,pint原来指向的内存会自动释放,而不需要我们调用delete操作符做释放操作。不过,上述便利的前提是,申请的内存是基本数据类型,或者定义了析构函数...原创 2019-09-30 13:03:14 · 772 阅读 · 0 评论 -
oracle持续连接造成的内存泄漏及出现TNS ORA-12516问题
使用Oracle API短时间内持续连接Oracle server,会出现“ORA-12516: TNS:listener could not find available handler with matching protocol stack”错误,同时会造成内存泄漏。测试代码如下:#include <iostream>#include <deque>#incl...原创 2019-09-30 14:38:22 · 1247 阅读 · 1 评论