helloc$valgrind ./a.out
==123254== Memcheck, a memory error detector
==123254== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==123254== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright
info
==123254== Command: ./a.out
==123254==
enter string (EOF) to quit): test1
enter string (EOF) to quit): test2
enter string (EOF) to quit): (all done)

test1
test2
==123254==
==123254== HEAP SUMMARY:
==123254==     in use at exit: 0 bytes in 0 blocks
==123254==   total heap usage: 6 allocs, 6 frees, 2,084 bytes allocated
==123254==
==123254== All heap blocks were freed -- no leaks are possible
==123254==
==123254== For lists of detected and suppressed errors, rerun with: -s
==123254== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
-----------------------------------------------------------------------------------------------------------------
simple c program source code:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXC 1024
int main(void){
    char buf[MAXC],**arr = NULL;
    size_t nstr = 0;    /* counter for number of string stored */
    for(;;){
        size_t len;     /* var to hold length of string after n removeal */
        fputs("enter string (EOF) to quit): ",stdout);
        if(!fgets(buf,MAXC,stdin)){
            puts("(all done)\n");
            break;
        }
        buf[len = strcspn(buf,"\r\n")] = 0;
    /*always realloc using temp pointer to avoid mem-leak on reallco
failure*/
    void *tmp = realloc(arr,(nstr+1) * sizeof *arr);
    if(!tmp){
        perror("realloc-tmp");
        break;
    }
    arr = tmp;
    if(!(arr[nstr] = malloc(len + 1))){
        perror("malloc-arr[str]");
        break;
    }
    memcpy(arr[nstr++], buf,len + 1);
}
    for(size_t i = 0; i < nstr; i++){
        puts(arr[i]);
        free(arr[i]);
    }
    free(arr);
    return 0;
}
---------------------------------------------

New to  C,   I am not sure the following:
total heap usage: 6 allocs, 6 frees, 2,084 bytes allocated

I guess 6 allocs is 3 times mallocs called plus 3 times puts function
called?
But I don't know where 2084 comes from.


-- 
 I recommend David Deutsch's <<The Beginning of Infinity>>

  Jian
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to