- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在需要读取命令行参数的程序中避免任何内存泄漏,该命令行参数是要读取的参数文件的路径。如果我编译以下程序并使用 valgrind
检查可执行文件,我仍然会返回一个 泄漏摘要
可能丢失:3 个 block 中的 72 个字节
。如何避免以下设置中的内存泄漏?
非常感谢您的帮助!
// main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "constant.h"
void set_up_parameters(parameters *params, int argc, char **argv) {
char *input_file_name_ptr;
input_file_name_ptr = calloc((INPUT_CHAR_LEN + 1), sizeof(char));
if (input_file_name_ptr == NULL) {
printf("Cannot allocate input_file_name_ptr\n");
exit(1);
}
params->input_file_name = input_file_name_ptr;
}
int main(int argc, char *argv[]) {
parameters *params_ptr;
params_ptr = NULL;
params_ptr = calloc(1, sizeof(parameters));
if (params_ptr == NULL) {
printf("Cannot allocate parameters\n");
exit(1);
}
set_up_parameters(params_ptr, argc, argv);
free(params_ptr->input_file_name);
free(params_ptr);
return 0;
}
我的文件 constant.h
如下:
#define INPUT_CHAR_LEN 100
typedef struct {
char *input_file_name;
int n_params;
} parameters;
更新
非常感谢您的所有回复。我按照建议在 exit(1)
之前调整为在 set_up_parameters()
中包含 free(params);
行。然后我使用以下内容进行编译:
gcc -c -O3 -ggdb3 main.c
gcc main.o -o check.exe
我从 valgrind
获得了输出(使用命令 valgrind --leak-check=full --show-leak-kinds=all --verbose --track-origins=yes - -log-file=valgrind.log ./check.exe
) 如下:
==39172== Memcheck, a memory error detector
==39172== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==39172== Using Valgrind-3.15.0-608cb11914-20190413 and LibVEX; rerun with -h for copyright info
==39172== Command: ./check.exe
==39172== Parent PID: 33579
==39172==
--39172--
--39172-- Valgrind options:
--39172-- --leak-check=full
--39172-- --show-leak-kinds=all
--39172-- --verbose
--39172-- --track-origins=yes
--39172-- --log-file=valgrind.log
--39172-- Output from sysctl({CTL_KERN,KERN_VERSION}):
--39172-- Darwin Kernel Version 17.7.0: Fri Oct 4 23:08:59 PDT 2019; root:xnu-4570.71.57~1/RELEASE_X86_64
--39172-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
--39172-- Page sizes: currently 4096, max supported 4096
--39172-- Valgrind library directory: /usr/local/Cellar/valgrind/3.15.0/lib/valgrind
--39172-- ./check.exe (rx at 0x100000000, rw at 0x100001000)
--39172-- reading syms from primary file (3 12)
--39172-- dSYM= ./check.exe.dSYM/Contents/Resources/DWARF/check.exe
--39172-- reading dwarf3 from dsyms file
--39172-- /usr/lib/dyld (rx at 0x100003000, rw at 0x10004e000)
--39172-- reading syms from primary file (5 1487)
--39172-- Scheduler: using generic scheduler lock implementation.
--39172-- Reading suppressions file: /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp
.... (removed lines due to links to personal dirs)
==39172==
==39172== TO CONTROL THIS PROCESS USING vgdb (which you probably
==39172== don't want to do, unless you know exactly what you're doing,
==39172== or are doing some strange experiment):
==39172== /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/../../bin/vgdb --pid=39172 ...command...
==39172==
==39172== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==39172== /path/to/gdb ./check.exe
==39172== and then give GDB the following command
==39172== target remote | /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/../../bin/vgdb --pid=39172
==39172== --pid is optional if only one valgrind process is running
==39172==
--39172-- REDIR: 0x100030ac0 (dyld:strcmp) redirected to 0x258057de2 (???)
--39172-- REDIR: 0x10002abac (dyld:arc4random) redirected to 0x258057e80 (???)
--39172-- REDIR: 0x10002aa60 (dyld:strlen) redirected to 0x258057db1 (???)
--39172-- REDIR: 0x10002a9c0 (dyld:strcpy) redirected to 0x258057dfe (???)
--39172-- REDIR: 0x10002e0e6 (dyld:strcat) redirected to 0x258057dc2 (???)
--39172-- REDIR: 0x10002e124 (dyld:strlcat) redirected to 0x258057e1b (???)
--39172-- /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_core-amd64-darwin.so (rx at 0x1000a1000, rw at 0x1000a7000)
--39172-- reading syms from primary file (3 93)
--39172-- dSYM= /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_core-amd64-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_core-amd64-darwin.so
--39172-- /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so (rx at 0x1000ab000, rw at 0x1000b3000)
--39172-- reading syms from primary file (72 102)
--39172-- dSYM= /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so.dSYM/Contents/Resources/DWARF/vgpreload_memcheck-amd64-darwin.so
--39172-- /usr/lib/libSystem.B.dylib (rx at 0x1000b9000, rw at 0x1000bb000)
--39172-- reading syms from primary file (31 5)
--39172-- /usr/lib/system/libcache.dylib (rx at 0x1000c1000, rw at 0x1000c6000)
--39172-- reading syms from primary file (32 29)
--39172-- /usr/lib/system/libcommonCrypto.dylib (rx at 0x1000cb000, rw at 0x1000d6000)
--39172-- reading syms from primary file (221 169)
--39172-- /usr/lib/system/libcompiler_rt.dylib (rx at 0x1000e3000, rw at 0x1000eb000)
--39172-- reading syms from primary file (510 8)
--39172-- /usr/lib/system/libcopyfile.dylib (rx at 0x1000f8000, rw at 0x100102000)
--39172-- reading syms from primary file (13 35)
--39172-- /usr/lib/system/libcorecrypto.dylib (rx at 0x100108000, rw at 0x10018e000)
--39172-- reading syms from primary file (512 677)
--39172-- /usr/lib/system/libdispatch.dylib (rx at 0x1001aa000, rw at 0x1001e4000)
--39172-- reading syms from primary file (271 945)
--39172-- /usr/lib/system/libdyld.dylib (rx at 0x10021e000, rw at 0x10023c000)
--39172-- reading syms from primary file (97 992)
--39172-- /usr/lib/system/libkeymgr.dylib (rx at 0x100256000, rw at 0x100257000)
--39172-- reading syms from primary file (12 3)
--39172-- /usr/lib/system/libmacho.dylib (rx at 0x100262000, rw at 0x100267000)
--39172-- reading syms from primary file (105 1)
--39172-- /usr/lib/system/libquarantine.dylib (rx at 0x10026d000, rw at 0x100270000)
--39172-- reading syms from primary file (67 6)
--39172-- /usr/lib/system/libremovefile.dylib (rx at 0x100275000, rw at 0x100277000)
--39172-- reading syms from primary file (15 4)
--39172-- /usr/lib/system/libsystem_asl.dylib (rx at 0x10027c000, rw at 0x100294000)
--39172-- reading syms from primary file (222 225)
--39172-- /usr/lib/system/libsystem_blocks.dylib (rx at 0x1002a1000, rw at 0x1002a2000)
--39172-- reading syms from primary file (21 6)
--39172-- /usr/lib/system/libsystem_c.dylib (rx at 0x1002a6000, rw at 0x100330000)
--39172-- reading syms from primary file (1342 806)
--39172-- /usr/lib/system/libsystem_configuration.dylib (rx at 0x100358000, rw at 0x10035c000)
--39172-- reading syms from primary file (38 66)
--39172-- /usr/lib/system/libsystem_coreservices.dylib (rx at 0x100362000, rw at 0x100366000)
--39172-- reading syms from primary file (14 37)
--39172-- /usr/lib/system/libsystem_darwin.dylib (rx at 0x10036b000, rw at 0x10036d000)
--39172-- reading syms from primary file (12 105)
--39172-- /usr/lib/system/libsystem_dnssd.dylib (rx at 0x100372000, rw at 0x100379000)
--39172-- reading syms from primary file (49 24)
--39172-- /usr/lib/system/libsystem_info.dylib (rx at 0x10037f000, rw at 0x1003c9000)
--39172-- reading syms from primary file (525 650)
--39172-- /usr/lib/system/libsystem_m.dylib (rx at 0x1003e0000, rw at 0x10042c000)
--39172-- reading syms from primary file (805 1)
--39172-- /usr/lib/system/libsystem_malloc.dylib (rx at 0x10043a000, rw at 0x10045a000)
--39172-- reading syms from primary file (127 264)
--39172-- /usr/lib/system/libsystem_network.dylib (rx at 0x100466000, rw at 0x100597000)
--39172-- reading syms from primary file (1126 1216)
--39172-- /usr/lib/system/libsystem_networkextension.dylib (rx at 0x1005d7000, rw at 0x1005e2000)
--39172-- reading syms from primary file (98 229)
--39172-- /usr/lib/system/libsystem_notify.dylib (rx at 0x1005ee000, rw at 0x1005f8000)
--39172-- reading syms from primary file (113 54)
--39172-- /usr/lib/system/libsystem_sandbox.dylib (rx at 0x1005ff000, rw at 0x100603000)
--39172-- reading syms from primary file (93 8)
--39172-- /usr/lib/system/libsystem_secinit.dylib (rx at 0x100609000, rw at 0x10060b000)
--39172-- reading syms from primary file (1 7)
--39172-- /usr/lib/system/libsystem_kernel.dylib (rx at 0x100610000, rw at 0x100637000)
--39172-- reading syms from primary file (1282 100)
--39172-- /usr/lib/system/libsystem_platform.dylib (rx at 0x100650000, rw at 0x100658000)
--39172-- reading syms from primary file (157 101)
--39172-- /usr/lib/system/libsystem_pthread.dylib (rx at 0x100660000, rw at 0x10066c000)
--39172-- reading syms from primary file (178 77)
--39172-- /usr/lib/system/libsystem_symptoms.dylib (rx at 0x100678000, rw at 0x100680000)
--39172-- reading syms from primary file (10 93)
--39172-- /usr/lib/system/libsystem_trace.dylib (rx at 0x100686000, rw at 0x10069a000)
--39172-- reading syms from primary file (114 245)
--39172-- /usr/lib/system/libunwind.dylib (rx at 0x1006a8000, rw at 0x1006ae000)
--39172-- reading syms from primary file (102 52)
--39172-- /usr/lib/system/libxpc.dylib (rx at 0x1006b5000, rw at 0x1006e3000)
--39172-- reading syms from primary file (567 915)
--39172-- /usr/lib/closure/libclosured.dylib (rx at 0x100705000, rw at 0x100739000)
--39172-- reading syms from primary file (1 966)
--39172-- /usr/lib/libobjc.A.dylib (rx at 0x100754000, rw at 0x100b43000)
--39172-- reading syms from primary file (369 902)
--39172-- /usr/lib/libc++abi.dylib (rx at 0x100cf3000, rw at 0x100d18000)
--39172-- reading syms from primary file (369 212)
--39172-- /usr/lib/libc++.1.dylib (rx at 0x100d27000, rw at 0x100d7e000)
--39172-- reading syms from primary file (2023 1681)
--39172-- REDIR: 0x100650ac0 (libsystem_platform.dylib:_platform_memchr$VARIANT$Haswell) redirected to 0x1000adbc5 (_platform_memchr$VARIANT$Haswell)
--39172-- REDIR: 0x100650ba0 (libsystem_platform.dylib:_platform_memcmp) redirected to 0x1000ae2b2 (_platform_memcmp)
--39172-- REDIR: 0x1006510e0 (libsystem_platform.dylib:_platform_strncmp) redirected to 0x1000adaca (_platform_strncmp)
--39172-- REDIR: 0x1002a7220 (libsystem_c.dylib:strlen) redirected to 0x1000ad75b (strlen)
--39172-- REDIR: 0x1006516a0 (libsystem_platform.dylib:_platform_strcmp) redirected to 0x1000adb44 (_platform_strcmp)
--39172-- REDIR: 0x10043e5f4 (libsystem_malloc.dylib:calloc) redirected to 0x1000ac62f (calloc)
--39172-- REDIR: 0x10043dca0 (libsystem_malloc.dylib:malloc_default_zone) redirected to 0x1000ad36c (malloc_default_zone)
--39172-- REDIR: 0x10043c1da (libsystem_malloc.dylib:malloc_zone_malloc) redirected to 0x1000ac27b (malloc_zone_malloc)
--39172-- REDIR: 0x10043dca9 (libsystem_malloc.dylib:malloc_zone_calloc) redirected to 0x1000ac81d (malloc_zone_calloc)
--39172-- REDIR: 0x10043b5a7 (libsystem_malloc.dylib:malloc) redirected to 0x1000ac010 (malloc)
--39172-- REDIR: 0x10043dd71 (libsystem_malloc.dylib:malloc_zone_from_ptr) redirected to 0x1000ad3ad (malloc_zone_from_ptr)
--39172-- REDIR: 0x10043d69d (libsystem_malloc.dylib:free) redirected to 0x1000ac3f1 (free)
--39172-- REDIR: 0x10043e7a7 (libsystem_malloc.dylib:realloc) redirected to 0x1000ac9b1 (realloc)
--39172-- REDIR: 0x1006512c0 (libsystem_platform.dylib:_platform_strchr$VARIANT$Haswell) redirected to 0x1000ad61f (_platform_strchr$VARIANT$Haswell)
==39172==
==39172== HEAP SUMMARY:
==39172== in use at exit: 18,306 bytes in 163 blocks
==39172== total heap usage: 184 allocs, 21 frees, 26,754 bytes allocated
==39172==
==39172== Searching for pointers to 163 not-freed blocks
==39172== Checked 10,808,216 bytes
==39172==
==39172== 24 bytes in 1 blocks are still reachable in loss record 3 of 42
==39172== at 0x1000AC2FE: malloc_zone_malloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x100757928: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172== by 0x100755075: _objc_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1001ABB34: _os_object_init (in /usr/lib/system/libdispatch.dylib)
==39172==
==39172== 32 bytes in 1 blocks are still reachable in loss record 8 of 42
==39172== at 0x1000AC2FE: malloc_zone_malloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x100757A80: NXCreateHashTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757A50: NXCreateHashTable (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757950: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172==
==39172== 32 bytes in 1 blocks are still reachable in loss record 9 of 42
==39172== at 0x1000AC2FE: malloc_zone_malloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x100757AA1: NXCreateHashTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757A50: NXCreateHashTable (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757950: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172==
==39172== 32 bytes in 1 blocks are still reachable in loss record 10 of 42
==39172== at 0x1000AC086: malloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x100757B65: NXCreateHashTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757A50: NXCreateHashTable (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757950: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172==
==39172== 32 bytes in 1 blocks are still reachable in loss record 11 of 42
==39172== at 0x1000AC086: malloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x1007579B6: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172== by 0x100755075: _objc_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1001ABB34: _os_object_init (in /usr/lib/system/libdispatch.dylib)
==39172==
==39172== 48 bytes in 1 blocks are still reachable in loss record 15 of 42
==39172== at 0x1000AC8AD: malloc_zone_calloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x100757F18: _NXHashRehashToCapacity (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757E96: NXHashInsert (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757B8F: NXCreateHashTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757A50: NXCreateHashTable (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100757950: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007578FA: NXCreateMapTableFromZone (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007563CB: __sel_registerName(char const*, int, int) (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007560DA: sel_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007559AD: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172==
==39172== 72 bytes in 3 blocks are possibly lost in loss record 26 of 42
==39172== at 0x1000AC6EA: calloc (in /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so)
==39172== by 0x1007557E2: map_images_nolock (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1007687DA: objc_object::sidetable_retainCount() (in /usr/lib/libobjc.A.dylib)
==39172== by 0x100007C64: dyld::notifyBatchPartial(dyld_image_states, bool, char const* (*)(dyld_image_states, unsigned int, dyld_image_info const*), bool, bool) (in /usr/lib/dyld)
==39172== by 0x100007E39: 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 /usr/lib/dyld)
==39172== by 0x10022171D: _dyld_objc_notify_register (in /usr/lib/system/libdyld.dylib)
==39172== by 0x100755075: _objc_init (in /usr/lib/libobjc.A.dylib)
==39172== by 0x1001ABB34: _os_object_init (in /usr/lib/system/libdispatch.dylib)
==39172== by 0x1001ABB1B: libdispatch_init (in /usr/lib/system/libdispatch.dylib)
==39172== by 0x1000BA9C2: libSystem_initializer (in /usr/lib/libSystem.B.dylib)
==39172== by 0x100019AC5: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==39172== by 0x100019CF5: ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
==39172==
==39172== LEAK SUMMARY:
==39172== definitely lost: 0 bytes in 0 blocks
==39172== indirectly lost: 0 bytes in 0 blocks
==39172== possibly lost: 72 bytes in 3 blocks
==39172== still reachable: 200 bytes in 6 blocks
==39172== suppressed: 18,034 bytes in 154 blocks
==39172==
==39172== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 12 from 12)
--39172--
--39172-- used_suppression: 5 OSX1013:19-Leak /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:924 suppressed: 8,792 bytes in 5 blocks
--39172-- used_suppression: 7 OSX1013:17-Leak /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:906 suppressed: 3,744 bytes in 59 blocks
--39172-- used_suppression: 3 OSX1013:16-Leak /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:897 suppressed: 3,200 bytes in 50 blocks
--39172-- used_suppression: 16 OSX1013:10-Leak /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:839 suppressed: 2,178 bytes in 36 blocks
--39172-- used_suppression: 4 OSX1013:18-Leak /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:915 suppressed: 120 bytes in 4 blocks
--39172-- used_suppression: 1 OSX1013:dyld-5 /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:1283
--39172-- used_suppression: 2 OSX1013:dyld-4 /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:1275
--39172-- used_suppression: 1 OSX1013:dyld-3 /usr/local/Cellar/valgrind/3.15.0/lib/valgrind/default.supp:1267
==39172==
==39172== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 12 from 12)
最佳答案
严格来说,这是一个泄漏:
if(input_file_name_ptr == NULL){
printf("Cannot allocate input_file_name_ptr\n");
exit(1);
}
应该写成
if(input_file_name_ptr == NULL){
free(params);
printf("Cannot allocate input_file_name_ptr\n");
exit(1);
}
可能足以触发工具警告。
关于c - 在C中使用calloc为char数组分配内存时如何避免 'possibly lost'内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60639354/
我正在尝试创建一个包含 int[][] 项的数组 即 int version0Indexes[][4] = { {1,2,3,4}, {5,6,7,8} }; int version1Indexes[
我有一个整数数组: private int array[]; 如果我还有一个名为 add 的方法,那么以下有什么区别: public void add(int value) { array[va
当您尝试在 JavaScript 中将一个数组添加到另一个数组时,它会将其转换为一个字符串。通常,当以另一种语言执行此操作时,列表会合并。 JavaScript [1, 2] + [3, 4] = "
根据我正在阅读的教程,如果您想创建一个包含 5 列和 3 行的表格来表示这样的数据... 45 4 34 99 56 3 23 99 43 2 1 1 0 43 67 ...它说你可以使用下
我通常使用 python 编写脚本/程序,但最近开始使用 JavaScript 进行编程,并且在使用数组时遇到了一些问题。 在 python 中,当我创建一个数组并使用 for x in y 时,我得
我有一个这样的数组: temp = [ 'data1', ['data1_a','data1_b'], ['data2_a','data2_b','data2_c'] ]; // 我想使用 toStr
rent_property (table name) id fullName propertyName 1 A House Name1 2 B
这个问题在这里已经有了答案: 关闭13年前。 Possible Duplicate: In C arrays why is this true? a[5] == 5[a] array[index] 和
使用 Excel 2013。经过多年的寻找和适应,我的第一篇文章。 我正在尝试将当前 App 用户(即“John Smith”)与他的电子邮件地址“jsmith@work.com”进行匹配。 使用两个
当仅在一个边距上操作时,apply 似乎不会重新组装 3D 数组。考虑: arr 1),但对我来说仍然很奇怪,如果一个函数返回一个具有尺寸的对象,那么它们基本上会被忽略。 最佳答案 这是一个不太理
我有一个包含 GPS 坐标的 MySQL 数据库。这是我检索坐标的部分 PHP 代码; $sql = "SELECT lat, lon FROM gps_data"; $stmt=$db->query
我需要找到一种方法来执行这个操作,我有一个形状数组 [批量大小, 150, 1] 代表 batch_size 整数序列,每个序列有 150 个元素长,但在每个序列中都有很多添加的零,以使所有序列具有相
我必须通过 url 中的 json 获取文本。 层次结构如下: 对象>数组>对象>数组>对象。 我想用这段代码获取文本。但是我收到错误 :org.json.JSONException: No valu
enter code here- (void)viewDidLoad { NSMutableArray *imageViewArray= [[NSMutableArray alloc] init];
知道如何对二维字符串数组执行修剪操作,例如使用 Java 流 API 进行 3x3 并将其收集回相同维度的 3x3 数组? 重点是避免使用显式的 for 循环。 当前的解决方案只是简单地执行一个 fo
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我有来自 ASP.NET Web 服务的以下 XML 输出: 1710 1711 1712 1713
如果我有一个对象todo作为您状态的一部分,并且该对象包含数组列表,则列表内部有对象,在这些对象内部还有另一个数组listItems。如何更新数组 listItems 中 id 为“poi098”的对
我想将最大长度为 8 的 bool 数组打包成一个字节,通过网络发送它,然后将其解压回 bool 数组。已经在这里尝试了一些解决方案,但没有用。我正在使用单声道。 我制作了 BitArray,然后尝试
我们的数据库中有这个字段指示一周中的每一天的真/假标志,如下所示:'1111110' 我需要将此值转换为 boolean 数组。 为此,我编写了以下代码: char[] freqs = weekday
我是一名优秀的程序员,十分优秀!