Kiểm tra memory leak
TIL
496
White

Phùng Văn Tú viết ngày 29/07/2016

Sử dụng Valgrind để kiểm tra memory leak

Thử với ví dụ, đặt tên memory_leak.c, tên file chạy là memory_leak

#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])
{
        char *mem1 = NULL;
        char *mem2 = NULL;

        mem1 = (char*)malloc(sizeof(char) * 4);
        mem2 = (char*)malloc(sizeof(char) * 4);

        printf("Sample for checking memory leak using valgrind tool\n");

        free(mem1);
        //free(mem2);

        return 0;
}

Sử dụng Valgrind:

root@VMPC:/home/oedev# valgrind --leak-check=yes ./memory_leak_sample
==3363== Memcheck, a memory error detector
==3363== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==3363== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==3363== Command: ./memory_leak_sample
==3363==
Sample for checking memory leak using valgrind tool
==3363==
==3363== HEAP SUMMARY:
==3363==     in use at exit: 4 bytes in 1 blocks
==3363==   total heap usage: 2 allocs, 1 frees, 8 bytes allocated
==3363==
==3363== 4 bytes in 1 blocks are definitely lost in loss record 1 of 1
==3363==    at 0x402A17C: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==3363==    by 0x80484B1: main (memory_leak_sample.c:15)
==3363==
==3363== LEAK SUMMARY:
==3363==    definitely lost: 4 bytes in 1 blocks
==3363==    indirectly lost: 0 bytes in 0 blocks
==3363==      possibly lost: 0 bytes in 0 blocks
==3363==    still reachable: 0 bytes in 0 blocks
==3363==         suppressed: 0 bytes in 0 blocks
==3363==
==3363== For counts of detected and suppressed errors, rerun with: -v
==3363== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

Kết quả tổng quan nằm ở phần LEAK SUMMARY trong log phía trên.
4 byte được cấp phát nhưng chưa free,

doime 29-07-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Phùng Văn Tú

13 bài viết.
66 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
22 8
Chúng ta thường nghe nhiều đến Unicode, UTF8, UTF16, hay ShiftJS. Trong bài này chỉ xin làm rõ những khái niệm này để khi gặp phải vấn đề về Chars...
Phùng Văn Tú viết hơn 2 năm trước
22 8
White
18 6
4 thành phần của Embedded Linux Ta biết rằng Linux chạy ở khắp nơi từ siêu máy tính, máy chủ, máy để bàn (máy xách tay), điện thoại (android)...ch...
Phùng Văn Tú viết 9 tháng trước
18 6
White
17 2
Gần đây tôi có dịp đụng vào CMake, nên có tìm hiểu một chút về nó. Hy vọng có ích cho anh em. Nó cung cấp tính năng sinh ra Makefile một cách hiệu...
Phùng Văn Tú viết hơn 2 năm trước
17 2
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
White
8 0
Lấy fake path của file trong html input Ngữ cảnh: em cần làm một cái nút tải ảnh lên có preview. GIải pháp đầu: Dùng (Link) đọc file ảnh thành ba...
Hoàng Duy viết gần 2 năm trước
8 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
13 bài viết.
66 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!