为了实现学校项目,我必须仅使用 mmap 和 munmap 重新编码 malloc 和 free 函数。我还必须将这些函数编译到动态库(.so 文件)中并在运行时使用它。
我在 mac OS Sierra 10.12.6 下工作。
这是我的问题,当我运行非常简单的程序而没有任何 malloc 调用,但使用动态库时,我可以注意到一些 malloc 调用导致不需要的页面回收。我正在谈论的测试程序:
int main()
{
int i;
char *addr;
addr = 0;
i = 0;
while (i < 1024) {
i++;
}
return (0);
}
我正在尝试学习如何使用 strace 等调试工具,但现在我可以注意到 malloc 调用只是在我自己的源代码中使用 printf 。事实上,当我运行测试时,调用了 printf 而没有使用 malloc。这是我用来编译和运行所有内容的命令:
gcc -shared srcs... -o lib_malloc.so
gcc test.c -o test -L ./ -lmalloc
./run.sh ./test
(在第一行链接之前,源文件已经编译为带有 -Wall -Wextra -Werror 标志的目标文件)
这是 run.sh 文件:
#!/bin/sh
export DYLD_LIBRARY_PATH=.
export DYLD_INSERT_LIBRARIES="lib_malloc.so"
export DYLD_FORCE_FLAT_NAMESPACE=1
$@
我也写了一个简单的内存打印函数。它的目的是通过我自己的 malloc 调用我的链接列表并打印它来打印每个分配的 block ...如果我将它添加到我的 test.c 代码的末尾,我可以看到一些 block ,如下所示:
TINY : 0x106f65000
0x106f65052 - 0x106f65072 : 4 octets
0x106f6509c - 0x106f650bc : 4 octets
0x106f650e6 - 0x106f65106 : 4 octets
0x106f65130 - 0x106f6513f : 1 octets
0x106f65169 - 0x106f65196 : 5 octets
0x106f651c0 - 0x106f651fa : 7 octets
0x106f65224 - 0x106f65251 : 5 octets
0x106f6527b - 0x106f652ad : 6 octets
0x106f652d7 - 0x106f65306 : 5 octets
0x106f65330 - 0x106f6533e : 1 octets
0x106f65368 - 0x106f653a8 : 8 octets
0x106f653d2 - 0x106f65403 : 6 octets
0x106f6542d - 0x106f65470 : 8 octets
0x106f6549a - 0x106f654ce : 6 octets
0x106f654f8 - 0x106f6552e : 6 octets
0x106f65558 - 0x106f65564 : 1 octets
0x106f6558e - 0x106f655bb : 5 octets
0x106f655e5 - 0x106f6564b : 12 octets
0x106f65675 - 0x106f65685 : 2 octets
0x106f656af - 0x106f656ef : 8 octets
0x106f65719 - 0x106f65727 : 1 octets
0x106f65751 - 0x106f65851 : 32 octets
我们可以注意到,无论如何,只分配了“微小”不需要的空间...... 我可能在某个地方犯了一个愚蠢的错误或误解了某些事情,如果有人理解发生了什么,它会拯救我很多!我几天来一直在寻找解决方案,这些功能的所有源代码都已完成。 如果需要,我可以分享更多代码。请帮助 !
我对我的英语表示歉意,我目前正在练习,谢谢:)
最佳答案
通过将对 sleep(30)
的调用插入到示例程序中,并使用系统分配器在环境中设置 MallocStackLogging=YES
来运行它,我们可以使用 malloc_history
查看意外分配事件的堆栈跟踪:
mrowe@apollo:~$ malloc_history test -callTree
malloc_history Report Version: 2.0
Process: test [16546]
Path: /Users/mrowe/test
Load Address: 0x10d108000
Identifier: test
Version: 0
Code Type: X86-64
Parent Process: bash [15909]
Date/Time: 2018-12-04 23:45:21.610 -0800
Launch Time: 2018-12-04 23:45:20.309 -0800
OS Version: Mac OS X 10.14 (18A389)
Report Version: 7
Analysis Tool: /Applications/Xcode-10.0.app/Contents/Developer/usr/bin/malloc_history
Analysis Tool Version: Xcode 10.0 (10A255)
Physical footprint: 884K
Physical footprint (peak): 884K
----
Call graph:
157 (13.0K) Thread_114575c1
157 (13.0K) _dyld_start (in dyld) + 54 [0x1113a2036]
157 (13.0K) dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) (in dyld) + 1154 [0x1113a24f6]
157 (13.0K) dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) (in dyld) + 6237 [0x1113a878f]
157 (13.0K) dyld::initializeMainExecutable() (in dyld) + 199 [0x1113a3774]
157 (13.0K) ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) (in dyld) + 74 [0x1113b42e8]
157 (13.0K) ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in dyld) + 134 [0x1113b4254]
157 (13.0K) ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in dyld) + 249 [0x1113b506d]
157 (13.0K) ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, char const*, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) (in dyld) + 358 [0x1113b50da]
157 (13.0K) ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) (in dyld) + 40 [0x1113b9ec6]
157 (13.0K) ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in dyld) + 518 [0x1113b9cc8]
130 (11.2K) libSystem_initializer (in libSystem.B.dylib) + 121 [0x7fff62b299c5]
+ 130 (11.2K) libdispatch_init (in libdispatch.dylib) + 282 [0x7fff656703a7]
+ 130 (11.2K) _os_object_init (in libdispatch.dylib) + 13 [0x7fff656645c4]
+ 130 (11.2K) _objc_init (in libobjc.A.dylib) + 116 [0x7fff645d0c34]
+ 130 (11.2K) _dyld_objc_notify_register (in libdyld.dylib) + 113 [0x7fff6569e647]
+ 130 (11.2K) dyld::registerObjCNotifiers(void (*)(unsigned int, char const* const*, mach_header const* const*), void (*)(char const*, mach_header const*), void (*)(char const*, mach_header const*)) (in dyld) + 63 [0x1113a669a]
+ 130 (11.2K) dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in dyld) + 1477 [0x1113a6571]
+ 130 (11.2K) map_images (in libobjc.A.dylib) + 68 [0x7fff645e5279]
+ 130 (11.2K) map_images_nolock (in libobjc.A.dylib) + 1197 [0x7fff645d1473]
+ 116 (7.62K) _read_images (in libobjc.A.dylib) + 2468 [0x7fff645d2c66]
+ ! 50 (3.12K) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! : 50 (3.12K) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! : 50 (3.12K) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 50 (3.12K) realizeClass(objc_class*) (in libobjc.A.dylib) + 287 [0x7fff645d45e3]
+ ! : 50 (3.12K) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! : 50 (3.12K) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! : 50 (3.12K) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 16 (1.38K) realizeClass(objc_class*) (in libobjc.A.dylib) + 263 [0x7fff645d45cb]
+ ! 8 (896 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 263 [0x7fff645d45cb]
+ ! | 6 (768 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 263 [0x7fff645d45cb]
+ ! | + 5 (704 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 287 [0x7fff645d45e3]
+ ! | + ! 4 (640 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 1398 [0x7fff645d4a3a]
+ ! | + ! : 4 (640 bytes) unattachedCategoriesForClass(objc_class*, bool) (in libobjc.A.dylib) + 53 [0x7fff645d5731]
+ ! | + ! : 4 (640 bytes) NXCreateMapTable (in libobjc.A.dylib) + 39 [0x7fff645d3217]
+ ! | + ! : 1 (528 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 285 [0x7fff645d333b]
+ ! | + ! : | 1 (528 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! | + ! : 1 (48 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 214 [0x7fff645d32f4]
+ ! | + ! : | 1 (48 bytes) NXHashInsert (in libobjc.A.dylib) + 373 [0x7fff645d37d8]
+ ! | + ! : | 1 (48 bytes) _NXHashRehashToCapacity (in libobjc.A.dylib) + 101 [0x7fff645d385b]
+ ! | + ! : | 1 (48 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! | + ! : 1 (32 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 39 [0x7fff645d3245]
+ ! | + ! : | 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! | + ! : 1 (32 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 181 [0x7fff645d32d3]
+ ! | + ! : 1 (32 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! | + ! : 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! | + ! 1 (64 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! | + ! 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! | + ! 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! | + 1 (64 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! | + 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! | + 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! | 1 (64 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! | + 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! | + 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! | 1 (64 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 287 [0x7fff645d45e3]
+ ! | 1 (64 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! | 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! | 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 4 (256 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! | 4 (256 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! | 4 (256 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 4 (256 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 287 [0x7fff645d45e3]
+ ! 4 (256 bytes) realizeClass(objc_class*) (in libobjc.A.dylib) + 77 [0x7fff645d4511]
+ ! 4 (256 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! 4 (256 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ 1 (2.50K) _read_images (in libobjc.A.dylib) + 1845 [0x7fff645d29f7]
+ ! 1 (2.50K) NXMapInsert (in libobjc.A.dylib) + 285 [0x7fff645d42b5]
+ ! 1 (2.50K) _NXMapRehash(_NXMapTable*) (in libobjc.A.dylib) + 84 [0x7fff645d43fe]
+ ! 1 (2.50K) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ 1 (736 bytes) _read_images (in libobjc.A.dylib) + 396 [0x7fff645d244e]
+ ! 1 (736 bytes) arc4random_buf (in libsystem_c.dylib) + 37 [0x7fff65723479]
+ ! 1 (736 bytes) arc4_init (in libsystem_c.dylib) + 109 [0x7fff6572331d]
+ ! 1 (736 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! 1 (736 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ 7 (256 bytes) _read_images (in libobjc.A.dylib) + 505 [0x7fff645d24bb]
+ ! 7 (256 bytes) NXCreateMapTable (in libobjc.A.dylib) + 39 [0x7fff645d3217]
+ ! 4 (144 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 79 [0x7fff645d326d]
+ ! : 4 (144 bytes) NXCreateHashTable (in libobjc.A.dylib) + 47 [0x7fff645d3392]
+ ! : 1 (48 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 310 [0x7fff645d34d1]
+ ! : | 1 (48 bytes) NXHashInsert (in libobjc.A.dylib) + 373 [0x7fff645d37d8]
+ ! : | 1 (48 bytes) _NXHashRehashToCapacity (in libobjc.A.dylib) + 101 [0x7fff645d385b]
+ ! : | 1 (48 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! : 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 39 [0x7fff645d33c2]
+ ! : | 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! : 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 72 [0x7fff645d33e3]
+ ! : | 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! : 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 268 [0x7fff645d34a7]
+ ! : 1 (32 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (48 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 285 [0x7fff645d333b]
+ ! : 1 (48 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (32 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 39 [0x7fff645d3245]
+ ! : 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (32 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 181 [0x7fff645d32d3]
+ ! 1 (32 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ 4 (112 bytes) _read_images (in libobjc.A.dylib) + 540 [0x7fff645d24de]
+ ! 4 (112 bytes) NXCreateHashTable (in libobjc.A.dylib) + 47 [0x7fff645d3392]
+ ! 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 39 [0x7fff645d33c2]
+ ! : 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 268 [0x7fff645d34a7]
+ ! : 1 (32 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (32 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 310 [0x7fff645d34d1]
+ ! : 1 (32 bytes) NXHashInsert (in libobjc.A.dylib) + 175 [0x7fff645d3712]
+ ! : 1 (32 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 1 (16 bytes) NXCreateHashTableFromZone (in libobjc.A.dylib) + 402 [0x7fff645d352d]
+ ! 1 (16 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ 1 (32 bytes) _read_images (in libobjc.A.dylib) + 1711 [0x7fff645d2971]
+ 1 (32 bytes) protocols() (in libobjc.A.dylib) + 47 [0x7fff645d3d33]
+ 1 (32 bytes) NXCreateMapTable (in libobjc.A.dylib) + 39 [0x7fff645d3217]
+ 1 (32 bytes) NXCreateMapTableFromZone (in libobjc.A.dylib) + 39 [0x7fff645d3245]
+ 1 (32 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
26 (1.61K) libSystem_initializer (in libSystem.B.dylib) + 126 [0x7fff62b299ca]
+ 19 (1.16K) _libxpc_initializer (in libxpc.dylib) + 983 [0x7fff658daa21]
+ ! 18 (992 bytes) _xpc_collect_environment (in libxpc.dylib) + 96 [0x7fff658dafa0]
+ ! : 12 (656 bytes) xpc_dictionary_set_string (in libxpc.dylib) + 24 [0x7fff658db123]
+ ! : | 6 (368 bytes) xpc_string_create (in libxpc.dylib) + 11 [0x7fff658db151]
+ ! : | + 6 (368 bytes) strdup (in libsystem_c.dylib) + 32 [0x7fff6575867e]
+ ! : | + 6 (368 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : | + 6 (368 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! : | 6 (288 bytes) xpc_string_create (in libxpc.dylib) + 38 [0x7fff658db16c]
+ ! : | 6 (288 bytes) _xpc_string_create (in libxpc.dylib) + 30 [0x7fff658f5c14]
+ ! : | 6 (288 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
+ ! : | 6 (288 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
+ ! : | 6 (288 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! : | 6 (288 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! : 6 (336 bytes) xpc_dictionary_set_string (in libxpc.dylib) + 41 [0x7fff658db134]
+ ! : 6 (336 bytes) _xpc_dictionary_insert (in libxpc.dylib) + 371 [0x7fff658db3ae]
+ ! : 6 (336 bytes) _xpc_malloc (in libxpc.dylib) + 47 [0x7fff658db4f7]
+ ! : 6 (336 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : 6 (336 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (192 bytes) _xpc_collect_environment (in libxpc.dylib) + 45 [0x7fff658daf6d]
+ ! 1 (192 bytes) xpc_dictionary_create (in libxpc.dylib) + 40 [0x7fff658db0b5]
+ ! 1 (192 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
+ ! 1 (192 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
+ ! 1 (192 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! 1 (192 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ 1 (192 bytes) _libxpc_initializer (in libxpc.dylib) + 988 [0x7fff658daa26]
+ ! 1 (192 bytes) _xpc_collect_images (in libxpc.dylib) + 65 [0x7fff658db5e0]
+ ! 1 (192 bytes) dyld::registerLoadCallback(void (*)(mach_header const*, char const*, bool)) (in dyld) + 265 [0x1113a58b9]
+ ! 1 (192 bytes) _xpc_dyld_image_callback (in libxpc.dylib) + 89 [0x7fff658db6bf]
+ ! 1 (192 bytes) xpc_dictionary_create (in libxpc.dylib) + 40 [0x7fff658db0b5]
+ ! 1 (192 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
+ ! 1 (192 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
+ ! 1 (192 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! 1 (192 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ 2 (112 bytes) _libxpc_initializer (in libxpc.dylib) + 142 [0x7fff658da6d8]
+ ! 1 (64 bytes) xpc_array_create (in libxpc.dylib) + 71 [0x7fff658dac3f]
+ ! : 1 (64 bytes) _xpc_calloc (in libxpc.dylib) + 52 [0x7fff658dacb6]
+ ! : 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! : 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ ! 1 (48 bytes) xpc_array_create (in libxpc.dylib) + 46 [0x7fff658dac26]
+ ! 1 (48 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
+ ! 1 (48 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
+ ! 1 (48 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ ! 1 (48 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
+ 3 (96 bytes) _libxpc_initializer (in libxpc.dylib) + 1139 [0x7fff658daabd]
+ ! 2 (80 bytes) setenv (in libsystem_c.dylib) + 94 [0x7fff657614d9]
+ ! : 1 (64 bytes) _owned_ptr_alloc (in libsystem_c.dylib) + 35 [0x7fff65760dfb]
+ ! : | 1 (64 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : | 1 (64 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! : 1 (16 bytes) _owned_ptr_alloc (in libsystem_c.dylib) + 17 [0x7fff65760de9]
+ ! : 1 (16 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! : 1 (16 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ ! 1 (16 bytes) setenv (in libsystem_c.dylib) + 140 [0x7fff65761507]
+ ! 1 (16 bytes) __setenv_locked (in libsystem_c.dylib) + 625 [0x7fff657610fe]
+ ! 1 (16 bytes) malloc (in libsystem_malloc.dylib) + 24 [0x7fff65860783]
+ ! 1 (16 bytes) malloc_zone_malloc (in libsystem_malloc.dylib) + 139 [0x7fff6586082b]
+ 1 (64 bytes) _libxpc_initializer (in libxpc.dylib) + 978 [0x7fff658daa1c]
+ 1 (64 bytes) _xpc_create_bootstrap_pipe (in libxpc.dylib) + 45 [0x7fff658dae82]
+ 1 (64 bytes) _xpc_pipe_create (in libxpc.dylib) + 64 [0x7fff658eecd8]
+ 1 (64 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
+ 1 (64 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
+ 1 (64 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
+ 1 (64 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
1 (128 bytes) libSystem_initializer (in libSystem.B.dylib) + 131 [0x7fff62b299cf]
1 (128 bytes) _libtrace_init (in libsystem_trace.dylib) + 250 [0x7fff658bda54]
1 (128 bytes) _dispatch_lane_create_with_target (in libdispatch.dylib) + 373 [0x7fff65669b12]
1 (128 bytes) _os_object_alloc_realized (in libdispatch.dylib) + 35 [0x7fff65664682]
1 (128 bytes) class_createInstance (in libobjc.A.dylib) + 83 [0x7fff645d683e]
1 (128 bytes) calloc (in libsystem_malloc.dylib) + 30 [0x7fff65862cba]
1 (128 bytes) malloc_zone_calloc (in libsystem_malloc.dylib) + 139 [0x7fff65862d62]
此输出清楚地表明分配来自 libSystem 中的各种静态初始值设定项。
关于c - 简单测试程序中无法解释的 malloc 调用 : malloc project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53462682/