Objective
Write free_str_array, which releases every string of a NULL-terminated char **, then releases the array of pointers itself, and returns how many strings it held.
Steps
$ free_str_array({"git", "gcc", "make", NULL})
in=[git][gcc][make] freed=3
$ free_str_array({"head", "", "tail", NULL})
in=[head][][tail] freed=3
$ free_str_array({NULL})
in= freed=0
$ free_str_array(NULL)
in=null freed=0
$ free_str_array(64 strings of 1 byte, then NULL)
built=64 len=1 freed=64
Expected files
Allowed functions
Allowed headers

Objective
Write free_str_array, which releases every string of a NULL-terminated char **, then releases the array of pointers itself, and returns how many strings it held.
Steps
$ free_str_array({"git", "gcc", "make", NULL})
in=[git][gcc][make] freed=3
$ free_str_array({"head", "", "tail", NULL})
in=[head][][tail] freed=3
$ free_str_array({NULL})
in= freed=0
$ free_str_array(NULL)
in=null freed=0
$ free_str_array(64 strings of 1 byte, then NULL)
built=64 len=1 freed=64
Expected files
Allowed functions
Allowed headers

Tests
Run the tests to grade your code