C++ 意外的minflt(小页面错误)
轻微的页面错误意味着:需要虚拟内存映射真实内存,但我发现我的测试代码在访问使用过的内存时有一些最小页面错误。 我的测试代码:C++ 意外的minflt(小页面错误),c++,linux,C++,Linux,轻微的页面错误意味着:需要虚拟内存映射真实内存,但我发现我的测试代码在访问使用过的内存时有一些最小页面错误。 我的测试代码: #include <iostream> #include <stdint.h> #include <stdlib.h> #include <unistd.h> using namespace std; int main() { uint64_t len = 1024ll * 128; //128k uin
#include <iostream>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
using namespace std;
int main() {
uint64_t len = 1024ll * 128; //128k
uint32_t times = 1000000000;
char *p = new char[len];
for (uint32_t t = 0; t < times; ++t) {
for (uint64_t i = 0; i < len; ++i) {
*(p + i) = 100;
}
}
delete[] p;
return 0;
}
minflt/s:34=34*4K=136K
我的测试代码中的数组=128K
当访问已用内存时,为什么我的测试代码产品minflt?为什么
*(p+i)=128
而不是p[i]=128代码>?而且,128
可能会溢出char
通常为8位,并且有符号,这使得它能容纳的最大值为127。我更改了我的代码。而代码> G++Me.cc-O主STD= C++ 11 O2更好,但在C标题(代码头>代码> <代码> >下,C++代码头>代码> <代码> -并且不需要这个程序的<代码>、<代码> STDLIB .h或非C++标准>代码> UNISST.H./COD>。旁注。更新的g++
和clang++
。
03:40:05 PM UID PID minflt/s majflt/s VSZ RSS %MEM Command
03:40:06 PM 0 42379 34.00 0.00 12672 1196 0.00 main
03:40:07 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:08 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:09 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:10 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:11 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:12 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:13 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:14 PM 0 42379 34.00 0.00 12672 1196 0.00 main
03:40:15 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:16 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:17 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:18 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:19 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:20 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:21 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:22 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:23 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:24 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:25 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:26 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:27 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:28 PM 0 42379 34.00 0.00 12672 1196 0.00 main
03:40:29 PM 0 42379 0.00 0.00 12672 1196 0.00 main
03:40:30 PM 0 42379 0.00 0.00 12672 1196 0.00 main