int main(int argc, char** argv)
{
TestSybaseDB();
return 0;
}
这是我在网上找到的一段代码,能够成功连接数据库,但是使用valgrind检测,总是发现有内存泄露
==1615== searching for pointers to 71 not-freed blocks.
==1615== checked 21,213,316 bytes.
==1615==
==1615==
==1615== 28 bytes in 1 blocks are still reachable in loss record 1 of 6
==1615== at 0x40053C0: malloc (vg_replace_malloc.c:149)
==1615== by 0x80D9A8: _dl_map_object_deps (in /lib/ld-2.5.so)
==1615== by 0x81288C: dl_open_worker (in /lib/ld-2.5.so)
==1615== by 0x80EC35: _dl_catch_error (in /lib/ld-2.5.so)
==1615== by 0x812211: _dl_open (in /lib/ld-2.5.so)
==1615== by 0x9214E1: do_dlopen (in /lib/libc-2.5.so)
==1615== by 0x80EC35: _dl_catch_error (in /lib/ld-2.5.so)
==1615== by 0x921694: __libc_dlopen_mode (in /lib/libc-2.5.so)
==1615== by 0x99CAD6: pthread_cancel_init (in /lib/libpthread-2.5.so)
==1615== by 0x99CC00: _Unwind_ForcedUnwind (in /lib/libpthread-2.5.so)
==1615== by 0x99A6D0: __pthread_unwind (in /lib/libpthread-2.5.so)
==1615== by 0x99539F: pthread_exit (in /lib/libpthread-2.5.so)
==1615==
==1615==
==1615== 36 bytes in 1 blocks are still reachable in loss record 2 of 6
==1615== at 0x40053C0: malloc (vg_replace_malloc.c:149)
==1615== by 0x413D84E: comn_calloc (in /home/dhcp/sybase/OCS-12_5/lib/libintl_r.so)
==1615== by 0x410E54B: comn_create_mutex (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x410F1BD: comn_signal_setup (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x41045D9: com_appglobal_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x4090E5D: cs_ctx_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcs_r.so)
==1615== by 0x8048BFB: ConnectSybaseDB(char*, char*, char*) (test.cpp:40)
==1615== by 0x8048DCB: TestSybaseDB() (test.cpp:143)
==1615== by 0x8048E07: main (test.cpp:153)
==1615==
==1615==
==1615== 48 bytes in 1 blocks are still reachable in loss record 3 of 6
==1615== at 0x40046FF: calloc (vg_replace_malloc.c:279)
==1615== by 0x998A13: pthread_cond_broadcast@GLIBC_2.0 (in /lib/libpthread-2.5.so)
==1615== by 0x410E864: comn_signal_event (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x410F95D: comn__sig_catcher_thread (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x99443A: start_thread (in /lib/libpthread-2.5.so)
==1615== by 0x8EBFDD: clone (in /lib/libc-2.5.so)
==1615==
==1615==
==1615== 240 bytes in 2 blocks are still reachable in loss record 4 of 6
==1615== at 0x40053C0: malloc (vg_replace_malloc.c:149)
==1615== by 0x400544A: realloc (vg_replace_malloc.c:306)
==1615== by 0x413D8C6: comn_realloc (in /home/dhcp/sybase/OCS-12_5/lib/libintl_r.so)
==1615== by 0x40BCE46: sybnet__async_poll (in /home/dhcp/sybase/OCS-12_5/lib/libsybtcl_r.so)
==1615== by 0x99443A: start_thread (in /lib/libpthread-2.5.so)
==1615== by 0x8EBFDD: clone (in /lib/libc-2.5.so)
==1615==
==1615==
==1615== 288 bytes in 2 blocks are possibly lost in loss record 5 of 6
==1615== at 0x40046FF: calloc (vg_replace_malloc.c:279)
==1615== by 0x811AC9: _dl_allocate_tls (in /lib/ld-2.5.so)
==1615== by 0x994B28: pthread_create@@GLIBC_2.1 (in /lib/libpthread-2.5.so)
==1615== by 0x9951A7: pthread_create@GLIBC_2.0 (in /lib/libpthread-2.5.so)
==1615== by 0x410E3DD: comn_create_thread_ex (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x410EC8F: comn_create_thread (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x410F278: comn_signal_setup (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x41045D9: com_appglobal_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x4090E5D: cs_ctx_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcs_r.so)
==1615== by 0x8048BFB: ConnectSybaseDB(char*, char*, char*) (test.cpp:40)
==1615== by 0x8048DCB: TestSybaseDB() (test.cpp:143)
==1615== by 0x8048E07: main (test.cpp:153)
==1615==
==1615==
==1615== 11,649 bytes in 64 blocks are still reachable in loss record 6 of 6
==1615== at 0x40053C0: malloc (vg_replace_malloc.c:149)
==1615== by 0x413D883: comn_malloc (in /home/dhcp/sybase/OCS-12_5/lib/libintl_r.so)
==1615== by 0x410E7C8: comn_create_event (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x410F252: comn_signal_setup (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x41045D9: com_appglobal_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcomn_r.so)
==1615== by 0x4090E5D: cs_ctx_alloc (in /home/dhcp/sybase/OCS-12_5/lib/libcs_r.so)
==1615== by 0x8048BFB: ConnectSybaseDB(char*, char*, char*) (test.cpp:40)
==1615== by 0x8048DCB: TestSybaseDB() (test.cpp:143)
==1615== by 0x8048E07: main (test.cpp:153)