I'm trying to paste two strings together. I know you can do it faster but I'm not allowed to use build-in functions. I allocate memory for string3 and in main the memory should be released but it is not. I'm not allowed to change anything in main. What am I doing wrong?
Allocating memory happens here:
 char *string_cat( char const *string1, char const *string2 )
{
    int lengte1 = string_length(string1);
    int lengte2 = string_length(string2);
    int totaal_lengte = lengte1+lengte2;
    char *string3 = (char*) malloc(totaal_lengte*sizeof(char));
    int i = 0;
    int j = 0;
    while(string1[i] != '\0'){
        string3[j] = string1[i];
        i++;
        j++;
    }
    i = 0;
    while(string2[i] != '\0'){
        string3[j] = string2[i];
        i++;
        j++;
    }
    return string3;
}
Freeing memory happens here:
 int main( int argc, char **argv )
    {
        char *str;
        
        printf( "== string_cat ==\n" );
        check( strcmp( ( str = string_cat( "", ""       ) ) == NULL ? "" : str, ""      ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "", "abcdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "a", "bcdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "ab", "cdef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "abc", "def" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "abcd", "ef" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "abcde", "f" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        check( strcmp( ( str = string_cat( "abcdef", "" ) ) == NULL ? "" : str, "abcdef" ) == 0, __FILE__, __LINE__ ); free( str );
        return 0;
    }
 
     
    