c - 简单测试程序中无法解释的 malloc 调用 : malloc project

标签 c memory malloc dynamic-library dyld

为了实现学校项目,我必须仅使用 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/

相关文章:

c - 在程序中运行程序

c - 直接内存映射GCC交叉编译

c++ - 构造函数调用了已创建的对象

c - 二维数组的 malloc()

c - 使用 bool 全局变量进行线程同步

c - 无法使用 read() 系统调用从其他终端读取数据

c - VS 2017 + cmake + 忍者 + mingw

android - Android 何时给出 OutOfMemory 异常?

c - 为什么在 malloc 中使用 sizeof(*pointer) 更安全

c - malloc 不添加新内存