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;
		}
	}
}