Witam mam problem a usuwaniem danego elementu w tablicy dla podwójnego wskaźnika.Widzi może ktoś ten błąd?
Z góry dziękuje za pomoc.

void usun(Pracownicy** &tab, size_t &tab_size, size_t ktory)
{
    if (ktory >= tab_size) // obie zmienne powinny być typu size_t
    {
        cout << "Nie ma pracownika o takim numerze\n";
        return;
    }
    else
    {

        if (tab_size == 1)
        {
            free(tab[0]);
            free(tab);
            tab = nullptr;
        }
        else
        {
            Pracownicy **new_tab = (Pracownicy**)malloc((tab_size -1) * sizeof(Pracownicy*));
            //Pracownicy **new_tab = new Pracownicy*[tab_size];
            for (size_t i = 0, j = 0; i < tab_size; ++i)
            {
                if (ktory != i)
                {
                    new_tab[j++] = tab[i];

                }
                else free(tab[i]);
            }

            free(tab);

            tab = new_tab;
            --tab_size;
        }
    }
}