C++和C程序内存占用对比分析

C++和C程序内存占用对比分析

本例以简单程序为例,分析C++和C语言的内存占用情况。本运行环境为:

  • Ubuntu 20.04 LTS
  • G++/GCC version: 9.3.0
  • libstdc++.so.6.0.28/libc-2.31.so

总结:

  • 实现输出hello world功能,C++代码比C代码占用的内存要大很多,主要在于多链接了libgcc_s.so.1、libm-2.31.so、libstdc++.so.6.0.28三个库;
  • 如果使用C++标准库中的container、vector等模板库,内存就更加可观了;
  • 在嵌入式资源比较紧张的环境中,优先考虑使用C语言;
  • 个人经验:C++比较适合开发大型程序,处理更加复杂的业务模型,扩展性和开发效率都比较好;

1,C代码文件为hello.c,C++代码文件为hello.cpp:

/* hello.c */
#include <stdio.h>
#include <unistd.h>

int main(void)
{
        printf("hello world\n");
        pause();
        return 0x0;
}
/* hello.cpp */
#include <iostream>
#include <cstdlib>
#include <unistd.h>

int main(void)
{
        std::cout << "hello world" << std::endl;
        pause();
        return 0x0;
}

2,编译

gcc hello.c -o c.out
g++ hello.cpp -o cpp.out

3,可执行文件大小

从下面的表格中可以看到:

  • C++编译之后的可执行文件,符号表的长度比C语言更多一些,strip之后可执行文件的size(占用的磁盘大小)是相同的;
  • C++代码段比C语言大;
  • Data相差不大(此例没有用到全局变量和静态变量),C++还是比C略大一些;
  • BSS段相差比较大,说明C++有很多的全局变量/静态变量;
**File Name** **Size** **Size(AfterStrip)** **Text** **Data** **BSS**
c.out 16728 14464 1653 608 8
cpp.out 17352 14464 2543 672 280
Delta(C++ - C) 624 0 890 64 272
xinpengc@xinpengc-VirtualBox:~/learn/cpp$ stat c.out cpp.out
  File: c.out
  Size: 14464           Blocks: 32         IO Block: 4096   regular file
Device: 805h/2053d      Inode: 928447      Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
Access: 2020-08-09 22:03:44.245216821 +0800
Modify: 2020-08-09 22:03:36.333217100 +0800
Change: 2020-08-09 22:03:36.333217100 +0800
 Birth: -
  File: cpp.out
  Size: 14464           Blocks: 32         IO Block: 4096   regular file
Device: 805h/2053d      Inode: 928442      Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
Access: 2020-08-09 22:03:44.245216821 +0800
Modify: 2020-08-09 22:03:36.333217100 +0800
Change: 2020-08-09 22:03:36.333217100 +0800

xinpengc@xinpengc-VirtualBox:~/learn/cpp$ size c.out cpp.out

text data bss dec hex filename

1653 608 8 2269 8dd c.out

2543 672 280 3495 da7 cpp.out


4,运行时分析

在hello.cpp代码中,引入了pause,导致cpp.out链接了C标准库,所以内存使受到了C库的干扰,结果可能不是很准确:

(在下面第5小节中,去掉了pause,但C++代码还是链接了C标准库)

FileName VmHWM (KB) VmRSS (KB)
c.out 580 580
cpp.out 1528 1528
Delta 948 948
xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/3340/status /proc/3340/maps
Name:   c.out
Umask:  0002
State:  S (sleeping)
Tgid:   3340
Ngid:   0
Pid:    3340
PPid:   2112
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 24 27 30 46 120 131 132 1000
NStgid: 3340
NSpid:  3340
NSpgid: 3340
NSsid:  2112
VmPeak:     2488 kB
VmSize:     2488 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:       580 kB
VmRSS:       580 kB
RssAnon:              64 kB
RssFile:             516 kB
RssShmem:              0 kB
VmData:      180 kB
VmStk:       132 kB
VmExe:         8 kB
VmLib:      1644 kB
VmPTE:        40 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
CoreDumping:    0
THP_enabled:    1
Threads:        1
SigQ:   0/7731
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   1
Cpus_allowed_list:      0
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1
nonvoluntary_ctxt_switches:     0
55d72012f000-55d720130000 r--p 00000000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
55d720130000-55d720131000 r-xp 00001000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
55d720131000-55d720132000 r--p 00002000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
55d720132000-55d720133000 r--p 00002000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
55d720133000-55d720134000 rw-p 00003000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
55d72027e000-55d72029f000 rw-p 00000000 00:00 0                          [heap]
7fb897b56000-7fb897b7b000 r--p 00000000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897b7b000-7fb897cf3000 r-xp 00025000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897cf3000-7fb897d3d000 r--p 0019d000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897d3d000-7fb897d3e000 ---p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897d3e000-7fb897d41000 r--p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897d41000-7fb897d44000 rw-p 001ea000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7fb897d44000-7fb897d4a000 rw-p 00000000 00:00 0
7fb897d5c000-7fb897d5d000 r--p 00000000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7fb897d5d000-7fb897d80000 r-xp 00001000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7fb897d80000-7fb897d88000 r--p 00024000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7fb897d89000-7fb897d8a000 r--p 0002c000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7fb897d8a000-7fb897d8b000 rw-p 0002d000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7fb897d8b000-7fb897d8c000 rw-p 00000000 00:00 0
7fffeb55d000-7fffeb57e000 rw-p 00000000 00:00 0                          [stack]
7fffeb5ee000-7fffeb5f1000 r--p 00000000 00:00 0                          [vvar]
7fffeb5f1000-7fffeb5f2000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
xinpengc@xinpengc-VirtualBox:~/learn/cpp$
xinpengc@xinpengc-VirtualBox:~/learn/cpp$
xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/3341/status /proc/3341/maps
Name:   cpp.out
Umask:  0002
State:  S (sleeping)
Tgid:   3341
Ngid:   0
Pid:    3341
PPid:   2112
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 24 27 30 46 120 131 132 1000
NStgid: 3341
NSpid:  3341
NSpgid: 3341
NSsid:  2112
VmPeak:     5876 kB
VmSize:     5876 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:      1528 kB
VmRSS:      1528 kB
RssAnon:             156 kB
RssFile:            1372 kB
RssShmem:              0 kB
VmData:      228 kB
VmStk:       132 kB
VmExe:         8 kB
VmLib:      3344 kB
VmPTE:        44 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
CoreDumping:    0
THP_enabled:    1
Threads:        1
SigQ:   0/7731
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
NoNewPrivs:     0
Seccomp:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   1
Cpus_allowed_list:      0
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:      0
voluntary_ctxt_switches:        1
nonvoluntary_ctxt_switches:     0
5640b9d4d000-5640b9d4e000 r--p 00000000 08:05 928442                     /home/xinpengc/learn/cpp/cpp.out
5640b9d4e000-5640b9d4f000 r-xp 00001000 08:05 928442                     /home/xinpengc/learn/cpp/cpp.out
5640b9d4f000-5640b9d50000 r--p 00002000 08:05 928442                     /home/xinpengc/learn/cpp/cpp.out
5640b9d50000-5640b9d51000 r--p 00002000 08:05 928442                     /home/xinpengc/learn/cpp/cpp.out
5640b9d51000-5640b9d52000 rw-p 00003000 08:05 928442                     /home/xinpengc/learn/cpp/cpp.out
5640bb6df000-5640bb700000 rw-p 00000000 00:00 0                          [heap]
7f8c07e56000-7f8c07e5a000 rw-p 00000000 00:00 0
7f8c07e5a000-7f8c07e5d000 r--p 00000000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7f8c07e5d000-7f8c07e6f000 r-xp 00003000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7f8c07e6f000-7f8c07e73000 r--p 00015000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7f8c07e73000-7f8c07e74000 r--p 00018000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7f8c07e74000-7f8c07e75000 rw-p 00019000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7f8c07e75000-7f8c07e84000 r--p 00000000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
7f8c07e84000-7f8c07f2b000 r-xp 0000f000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
7f8c07f2b000-7f8c07fc2000 r--p 000b6000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
7f8c07fc2000-7f8c07fc3000 r--p 0014c000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
7f8c07fc3000-7f8c07fc4000 rw-p 0014d000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
7f8c07fc4000-7f8c07fe9000 r--p 00000000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c07fe9000-7f8c08161000 r-xp 00025000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c08161000-7f8c081ab000 r--p 0019d000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c081ab000-7f8c081ac000 ---p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c081ac000-7f8c081af000 r--p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c081af000-7f8c081b2000 rw-p 001ea000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
7f8c081b2000-7f8c081b6000 rw-p 00000000 00:00 0
7f8c081b6000-7f8c0824c000 r--p 00000000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c0824c000-7f8c0833c000 r-xp 00096000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c0833c000-7f8c08385000 r--p 00186000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c08385000-7f8c08386000 ---p 001cf000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c08386000-7f8c08391000 r--p 001cf000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c08391000-7f8c08394000 rw-p 001da000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
7f8c08394000-7f8c08399000 rw-p 00000000 00:00 0
7f8c083ab000-7f8c083ac000 r--p 00000000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7f8c083ac000-7f8c083cf000 r-xp 00001000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7f8c083cf000-7f8c083d7000 r--p 00024000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7f8c083d8000-7f8c083d9000 r--p 0002c000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7f8c083d9000-7f8c083da000 rw-p 0002d000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
7f8c083da000-7f8c083db000 rw-p 00000000 00:00 0
7ffc9f0e5000-7ffc9f106000 rw-p 00000000 00:00 0                          [stack]
7ffc9f16d000-7ffc9f170000 r--p 00000000 00:00 0                          [vvar]
7ffc9f170000-7ffc9f171000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
xinpengc@xinpengc-VirtualBox:~/learn/cpp$

5,去掉pause之后的结果,和上面的结果差异不大:

1 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ gcc hello.c -o c.out
  2 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ g++ hello.cpp -o cpp.out
  3 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
  4 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ stat c.out cpp.out
  5   File: c.out
  6   Size: 16688           Blocks: 40         IO Block: 4096   regular file
  7 Device: 805h/2053d      Inode: 928445      Links: 1
  8 Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
  9 Access: 2020-08-10 20:52:02.738419952 +0800
 10 Modify: 2020-08-10 20:52:02.738419952 +0800
 11 Change: 2020-08-10 20:52:02.738419952 +0800
 12  Birth: -
 13   File: cpp.out
 14   Size: 17312           Blocks: 40         IO Block: 4096   regular file
 15 Device: 805h/2053d      Inode: 928442      Links: 1
 16 Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
 17 Access: 2020-08-10 20:52:12.123109624 +0800
 18 Modify: 2020-08-10 20:52:12.123109624 +0800
 19 Change: 2020-08-10 20:52:12.123109624 +0800
 20  Birth: -
 21 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ size c.out cpp.out
 22    text    data     bss     dec     hex filename
 23    1549     600       8    2157     86d c.out
 24    2455     664     280    3399     d47 cpp.out
 25 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 26 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ strip c.out cpp.out
 27 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ stat c.out cpp.out
 28   File: c.out
 29   Size: 14464           Blocks: 32         IO Block: 4096   regular file
 30 Device: 805h/2053d      Inode: 928447      Links: 1
 31 Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
 32 Access: 2020-08-10 20:52:31.232658960 +0800
 33 Modify: 2020-08-10 20:52:31.232658960 +0800
 34 Change: 2020-08-10 20:52:31.232658960 +0800
 35  Birth: -
 36   File: cpp.out
 37   Size: 14464           Blocks: 32         IO Block: 4096   regular file
 38 Device: 805h/2053d      Inode: 928445      Links: 1
 39 Access: (0775/-rwxrwxr-x)  Uid: ( 1000/xinpengc)   Gid: ( 1000/xinpengc)
 40 Access: 2020-08-10 20:52:31.244664959 +0800
 41 Modify: 2020-08-10 20:52:31.244664959 +0800
 42 Change: 2020-08-10 20:52:31.244664959 +0800
 43  Birth: -
 44 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ size c.out cpp.out
 45    text    data     bss     dec     hex filename
 46    1549     600       8    2157     86d c.out
 47    2455     664     280    3399     d47 cpp.out
 48 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 49 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 50 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 51 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat hello.c
 52 #include <stdio.h>
 53 #include <unistd.h>
 54 
 55 int main(void)
 56 {
 57         printf("hello world\n");
 58         while (1) {
 59     }
 60         return 0x0;
 61 }
 62 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 63 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat hello.cpp
 64 #include <iostream>
 65 #include <cstdlib>
 66 #include <unistd.h>
 67 
 68 int main(void)
 69 {
 70         std::cout << "hello world" << std::endl;
 71         while(1) {
 72     }
 73         return 0x0;
 74 }
 75 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
 76 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ ./c.out &
 77 [1] 2391
 78 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ hello world
 79 
 80 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ ./cpp.out &
 81 [2] 2392
 82 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ hello world
 83 
 84 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/2391/status
 85 Name:   c.out
 86 Umask:  0002
 87 State:  R (running)
 88 Tgid:   2391
 89 Ngid:   0
 90 Pid:    2391
 91 PPid:   2270
 92 TracerPid:      0
 93 Uid:    1000    1000    1000    1000
 94 Gid:    1000    1000    1000    1000
 95 FDSize: 256
 96 Groups: 4 24 27 30 46 120 131 132 1000
 97 NStgid: 2391
 98 NSpid:  2391
 99 NSpgid: 2391
100 NSsid:  2270
101 VmPeak:     2488 kB
102 VmSize:     2488 kB
103 VmLck:         0 kB
104 VmPin:         0 kB
105 VmHWM:       576 kB
106 VmRSS:       576 kB
107 RssAnon:              68 kB
108 RssFile:             508 kB
109 RssShmem:              0 kB
110 VmData:      180 kB
111 VmStk:       132 kB
112 VmExe:         8 kB
113 VmLib:      1644 kB
114 VmPTE:        48 kB
115 VmSwap:        0 kB
116 HugetlbPages:          0 kB
117 CoreDumping:    0
118 THP_enabled:    1
119 Threads:        1
120 SigQ:   0/7731
121 SigPnd: 0000000000000000
122 ShdPnd: 0000000000000000
123 SigBlk: 0000000000000000
124 SigIgn: 0000000000000000
125 SigCgt: 0000000000000000
126 CapInh: 0000000000000000
127 CapPrm: 0000000000000000
128 CapEff: 0000000000000000
129 CapBnd: 0000003fffffffff
130 CapAmb: 0000000000000000
131 NoNewPrivs:     0
132 Seccomp:        0
133 Speculation_Store_Bypass:       vulnerable
134 Cpus_allowed:   1
135 Cpus_allowed_list:      0
136 Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
137 Mems_allowed_list:      0
138 voluntary_ctxt_switches:        0
139 nonvoluntary_ctxt_switches:     991
140 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
141 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/2391/maps
142 55e8ec320000-55e8ec321000 r--p 00000000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
143 55e8ec321000-55e8ec322000 r-xp 00001000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
144 55e8ec322000-55e8ec323000 r--p 00002000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
145 55e8ec323000-55e8ec324000 r--p 00002000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
146 55e8ec324000-55e8ec325000 rw-p 00003000 08:05 928447                     /home/xinpengc/learn/cpp/c.out
147 55e8ecae9000-55e8ecb0a000 rw-p 00000000 00:00 0                          [heap]
148 7f7b12fd0000-7f7b12ff5000 r--p 00000000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
149 7f7b12ff5000-7f7b1316d000 r-xp 00025000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
150 7f7b1316d000-7f7b131b7000 r--p 0019d000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
151 7f7b131b7000-7f7b131b8000 ---p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
152 7f7b131b8000-7f7b131bb000 r--p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
153 7f7b131bb000-7f7b131be000 rw-p 001ea000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
154 7f7b131be000-7f7b131c4000 rw-p 00000000 00:00 0
155 7f7b131d6000-7f7b131d7000 r--p 00000000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
156 7f7b131d7000-7f7b131fa000 r-xp 00001000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
157 7f7b131fa000-7f7b13202000 r--p 00024000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
158 7f7b13203000-7f7b13204000 r--p 0002c000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
159 7f7b13204000-7f7b13205000 rw-p 0002d000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
160 7f7b13205000-7f7b13206000 rw-p 00000000 00:00 0
161 7ffcac716000-7ffcac737000 rw-p 00000000 00:00 0                          [stack]
162 7ffcac781000-7ffcac784000 r--p 00000000 00:00 0                          [vvar]
163 7ffcac784000-7ffcac785000 r-xp 00000000 00:00 0                          [vdso]
164 ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
165 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
166 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
167 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/2392/status
168 Name:   cpp.out
169 Umask:  0002
170 State:  R (running)
171 Tgid:   2392
172 Ngid:   0
173 Pid:    2392
174 PPid:   2270
175 TracerPid:      0
176 Uid:    1000    1000    1000    1000
177 Gid:    1000    1000    1000    1000
178 FDSize: 256
179 Groups: 4 24 27 30 46 120 131 132 1000
180 NStgid: 2392
181 NSpid:  2392
182 NSpgid: 2392
183 NSsid:  2270
184 VmPeak:     5876 kB
185 VmSize:     5876 kB
186 VmLck:         0 kB
187 VmPin:         0 kB
188 VmHWM:      1524 kB
189 VmRSS:      1524 kB
190 RssAnon:             152 kB
191 RssFile:            1372 kB
192 RssShmem:              0 kB
193 VmData:      228 kB
194 VmStk:       132 kB
195 VmExe:         8 kB
196 VmLib:      3344 kB
197 VmPTE:        44 kB
198 VmSwap:        0 kB
199 HugetlbPages:          0 kB
200 CoreDumping:    0
201 THP_enabled:    1
202 Threads:        1
203 SigQ:   0/7731
204 SigPnd: 0000000000000000
205 ShdPnd: 0000000000000000
206 SigBlk: 0000000000000000
207 SigIgn: 0000000000000000
208 SigCgt: 0000000000000000
209 CapInh: 0000000000000000
210 CapPrm: 0000000000000000
211 CapEff: 0000000000000000
212 CapBnd: 0000003fffffffff
213 CapAmb: 0000000000000000
214 NoNewPrivs:     0
215 Seccomp:        0
216 Speculation_Store_Bypass:       vulnerable
217 Cpus_allowed:   1
218 Cpus_allowed_list:      0
219 Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
220 Mems_allowed_list:      0
221 voluntary_ctxt_switches:        0
222 nonvoluntary_ctxt_switches:     2073
223 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
224 xinpengc@xinpengc-VirtualBox:~/learn/cpp$ cat /proc/2392/maps
225 55f73d5c7000-55f73d5c8000 r--p 00000000 08:05 928445                     /home/xinpengc/learn/cpp/cpp.out
226 55f73d5c8000-55f73d5c9000 r-xp 00001000 08:05 928445                     /home/xinpengc/learn/cpp/cpp.out
227 55f73d5c9000-55f73d5ca000 r--p 00002000 08:05 928445                     /home/xinpengc/learn/cpp/cpp.out
228 55f73d5ca000-55f73d5cb000 r--p 00002000 08:05 928445                     /home/xinpengc/learn/cpp/cpp.out
229 55f73d5cb000-55f73d5cc000 rw-p 00003000 08:05 928445                     /home/xinpengc/learn/cpp/cpp.out
230 55f73dfab000-55f73dfcc000 rw-p 00000000 00:00 0                          [heap]
231 7fed2c836000-7fed2c83a000 rw-p 00000000 00:00 0
232 7fed2c83a000-7fed2c83d000 r--p 00000000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
233 7fed2c83d000-7fed2c84f000 r-xp 00003000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
234 7fed2c84f000-7fed2c853000 r--p 00015000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
235 7fed2c853000-7fed2c854000 r--p 00018000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
236 7fed2c854000-7fed2c855000 rw-p 00019000 08:05 1841148                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
237 7fed2c855000-7fed2c864000 r--p 00000000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
238 7fed2c864000-7fed2c90b000 r-xp 0000f000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
239 7fed2c90b000-7fed2c9a2000 r--p 000b6000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
240 7fed2c9a2000-7fed2c9a3000 r--p 0014c000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
241 7fed2c9a3000-7fed2c9a4000 rw-p 0014d000 08:05 1841501                    /usr/lib/x86_64-linux-gnu/libm-2.31.so
242 7fed2c9a4000-7fed2c9c9000 r--p 00000000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
243 7fed2c9c9000-7fed2cb41000 r-xp 00025000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
244 7fed2cb41000-7fed2cb8b000 r--p 0019d000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
245 7fed2cb8b000-7fed2cb8c000 ---p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
246 7fed2cb8c000-7fed2cb8f000 r--p 001e7000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
247 7fed2cb8f000-7fed2cb92000 rw-p 001ea000 08:05 1840863                    /usr/lib/x86_64-linux-gnu/libc-2.31.so
248 7fed2cb92000-7fed2cb96000 rw-p 00000000 00:00 0
249 7fed2cb96000-7fed2cc2c000 r--p 00000000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
250 7fed2cc2c000-7fed2cd1c000 r-xp 00096000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
251 7fed2cd1c000-7fed2cd65000 r--p 00186000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
252 7fed2cd65000-7fed2cd66000 ---p 001cf000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
253 7fed2cd66000-7fed2cd71000 r--p 001cf000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
254 7fed2cd71000-7fed2cd74000 rw-p 001da000 08:05 1841929                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
255 7fed2cd74000-7fed2cd79000 rw-p 00000000 00:00 0
256 7fed2cd8b000-7fed2cd8c000 r--p 00000000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
257 7fed2cd8c000-7fed2cdaf000 r-xp 00001000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
258 7fed2cdaf000-7fed2cdb7000 r--p 00024000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
259 7fed2cdb8000-7fed2cdb9000 r--p 0002c000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
260 7fed2cdb9000-7fed2cdba000 rw-p 0002d000 08:05 1840650                    /usr/lib/x86_64-linux-gnu/ld-2.31.so
261 7fed2cdba000-7fed2cdbb000 rw-p 00000000 00:00 0
262 7ffcedcbf000-7ffcedce0000 rw-p 00000000 00:00 0                          [stack]
263 7ffceddd5000-7ffceddd8000 r--p 00000000 00:00 0                          [vvar]
264 7ffceddd8000-7ffceddd9000 r-xp 00000000 00:00 0                          [vdso]
265 ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]
266 xinpengc@xinpengc-VirtualBox:~/learn/cpp$
267 xinpengc@xinpengc-VirtualBox:~/learn/cpp$

原文链接: https://www.cnblogs.com/tangtangworld/p/13466817.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/201271

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:43
下一篇 2023年2月12日 下午8:44

相关推荐