gpt4 book ai didi

c - "heap"在哪里?

转载 作者:IT王子 更新时间:2023-10-29 01:06:30 25 4
gpt4 key购买 nike

我只想知道 cat/proc/16457/maps 的结果中我的 bash 进程 (pid = 16457) 的堆在哪里(如果存在!)

0078a000-007a0000 r-xp 00000000 08:02 1319336    /lib/ld-2.3.4.so
007a0000-007a1000 r--p 00015000 08:02 1319336 /lib/ld-2.3.4.so
007a1000-007a2000 rw-p 00016000 08:02 1319336 /lib/ld-2.3.4.so
007a9000-008cf000 r-xp 00000000 08:02 1384495 /lib/tls/libc-2.3.4.so
008cf000-008d1000 r--p 00125000 08:02 1384495 /lib/tls/libc-2.3.4.so
008d1000-008d3000 rw-p 00127000 08:02 1384495 /lib/tls/libc-2.3.4.so
008d3000-008d5000 rw-p 008d3000 00:00 0
008fc000-008fe000 r-xp 00000000 08:02 1319337 /lib/libdl-2.3.4.so
008fe000-008ff000 r--p 00001000 08:02 1319337 /lib/libdl-2.3.4.so
008ff000-00900000 rw-p 00002000 08:02 1319337 /lib/libdl-2.3.4.so
00b27000-00b2a000 r-xp 00000000 08:02 278109 /lib/libtermcap.so.2.0.8
00b2a000-00b2b000 rw-p 00002000 08:02 278109 /lib/libtermcap.so.2.0.8
08047000-080d8000 r-xp 00000000 08:02 902412 /bin/bash
080d8000-080de000 rw-p 00090000 08:02 902412 /bin/bash
080de000-080e3000 rw-p 080de000 00:00 0
09ceb000-09d25000 rw-p 09ceb000 00:00 0
b7d99000-b7d9b000 rw-p b7d99000 00:00 0
b7d9b000-b7da1000 r--s 00000000 08:02 130808 /usr/lib/gconv/gconv-modules.cache
b7da1000-b7dd6000 r--s 00000000 08:02 869910 /var/db/nscd/passwd
b7dd6000-b7fd6000 r--p 00000000 08:02 101088 /usr/lib/locale/locale-archive
b7fd6000-b7fd8000 rw-p b7fd6000 00:00 0
bff07000-c0000000 rw-p bff07000 00:00 0
ffffe000-fffff000 r-xp 00000000 00:00 0

最佳答案

大多数人指的“堆”是这一行:

080de000-080e3000 rw-p 080de000 00:00 0

即它是由 brk 系统调用创建和扩展的内存区域,紧跟在主程序的 .data.bss 段之后。

也可以将以下内容视为“堆”的一部分:

09ceb000-09d25000 rw-p 09ceb000 00:00 0

它似乎是由 mmap 创建的匿名映射,用于服务大型 malloc 请求。大多数 malloc 实现都使用 mmap 处理大型请求,因此它们可以在 free 上对其进行 munmap 并返回整个内存块到操作系统。它还使 calloc 更快,因为您可以保证以这种方式获得每个归零的页面。

关于c - "heap"在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com