测试环境:Linux
代码工具:source insight
Memtester版本:4.3.0
下载地址: http://pyropus.ca/software/memtester/
Memtester是一个很好的内存测试工具。其代码也不是很复杂。最主要的就是memtester.c和test.c,这两文件。其他脚本是一些配置编译选项,对分析这个源码没有什么影响。
我们先从memtester.c开始分析。
在memtester.c的134行中有
check_posix_system();
pagesize = memtester_pagesize();
pagesizemask = (ptrdiff_t) ~(pagesize - 1);
printf("pagesizemask is 0x%tx\n", pagesizemask);
check_posix_system是确认所测试的系统支不支持标准的POSIX接口。下面很多函数需要用到标准的接口,如果不支持,则只有error。
memtester_pagesize是用接口测试系统是32位还是64位,这涉及到其后的很多方方面面。
Pagesizemask是得出最大的地址范围。
下面很重要的就是:
while ((opt = getopt(argc, argv, "p:d:")) != -1) {
这句话是用来处理用户输入的数据的。关于getopt函数的解析,后面会有地址链接。
case