Kiểm tra memory leak
TIL
595
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.
76 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
24 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 3 năm trước
24 8
White
21 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 1 năm trước
21 6
White
18 5
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 gần 3 năm trước
18 5
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
White
19 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 gần 2 năm trước
19 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 1 năm trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
13 bài viết.
76 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á!