Kiểm tra memory leak
TIL
634
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.
83 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
28 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 3 năm trước
28 8
White
26 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 hơn 1 năm trước
26 6
White
19 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 3 năm trước
19 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 5 tháng trước
0 2
White
20 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 2 năm trước
20 1
White
9 0
Có một tuyên ngôn cho chủ nghĩa tối giản trong ngành phần mềm. Link: http://minifesto.org/ Fight for Pareto's law, look for the 20% of effort th...
Cẩm Huỳnh viết 2 tháng trước
9 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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