虚拟内存探究 -- 第三篇:一步一步画虚拟内存图
一、预备知识 二、实验环境 三、栈 四、堆 五、可执行程序的位置 六、命令行参数和环境变量 6.1 数组变量argv和env是相邻的吗? 6.2 第一个命令行参数紧挨着数组变量env吗? 七、栈真的是向下生长吗? 八、/proc 九、下节预告 十、继续阅读 十一、原文链接 这是虚拟内存系列文章的第三篇。...
一、预备知识 二、实验环境 三、栈 四、堆 五、可执行程序的位置 六、命令行参数和环境变量 6.1 数组变量argv和env是相邻的吗? 6.2 第一个命令行参数紧挨着数组变量env吗? 七、栈真的是向下生长吗? 八、/proc 九、下节预告 十、继续阅读 十一、原文链接 这是虚拟内存系列文章的第三篇。...
一、预备知识 二、实验环境 三、剖析一个简单的Python脚本 1. Python中的字节对象(bytes object) 1.1 字节和字符串(bytes vs str) 1.2 一切都是对象 2. 执行read_write_heap.py脚本 ...
一、实验环境 二、预备知识 三、虚拟内存 四、剖析一个简单的C程序 strdup 进程的虚拟内存空间多大 proc文件系统 mem文件 maps文件 pid 五、替换进程的字符串 /proc探究 ...
本文简要介绍左移导致的溢出问题。 实际项目中需要计算SD卡中某个目录的大小,并判断该目录所占空间是否超过SD卡总容量的一半。 测试过程中经常发现误报,该目录所占空间远小于SD卡容量一半的时候,就上报占用空间过半的事件。 排查发现原来是计算的时候移位导致了溢出。问题代码如下: unsigned int total_space_in_mb; unsigned long long used_s...
不怕不知道,就怕不知道自己不知道。 设备A(发送方)和设备B(接收方)通过串口通讯,如下图所示,使用COBS进行编解码主要是为了报文分割(解决粘包半包问题)。 开发和测试期间,A和B之间通信均正常。等到A设备批量生产的时候,极个别A设备和B无法正常通信。 第一反应是A和B的COBS编解码库(A和B由不同公司开发)会不会有问题,比如发送方编码错误或者接收方解码错误。于是把A编码后的报...
通过mongoose下载文件的时候,概率出现下载文件不完整的情况。 软件交互流程如下: 浏览器 <----HTTP连接----> web服务器mongoose <----本地TCP连接---->cgi进程 抓包发现,问题出现的时候,cgi进程发送给mongoose的文件就是不完整的。但是通过strace命令看,cgi进程是读完了整个文件并且都通过系统接口se...
代码编译的时候,编译服务器莫名其妙的报以下错误: fatal error: error writing to /tmp/ccGjoKTF.s:No space left on device 奇怪了,编译脚本中并没有往tmp目录写文件呀! 仔细看了下错误信息,这个ccGjoKTF.s应该是编译过程的中间文件,文件名是随机值。 然而makefile中并未要求保留汇编代码。 写了个de...
本文主要介绍arm平台curl交叉编译方法。 基于curl + openssl + zlib 的方式组建arm上的https客户端,其中curl作为http客户端,openssl提供https支持,zlib负责处理gzip压缩的http报文。 编译目录结构如下: curl-7.29.0、openssl-OpenSSL_1_0_2g和zlib-1.2.8是待编译的源码 libs用...
本文记录我读过的书,并根据个人体验进行了粗略的等级划分。 等级划分具有很大的主观性,仅供参考。 相关书目维护在xmind文档中,不定期更新:《我读过的书》 =========================================================================== 下面是之前发现的一些不错的技术书籍,可通过链接下载电子版。后续不再更新。 ...
本文简要介绍基于Nginx反向代理,建立Google镜像的步骤。 1. 准备一个可以访问google的服务器 可以考虑申请一个访问google不受限的云服务器,比如亚马逊。 2. 下载源码 wget https://codeload.github.com/openssl/openssl/zip/OpenSSL_1_1_0e -O OpenSSL_1_1_0e.zip wget ft...