Mne celkem trvalo nez jsem prisel na to, jak spravne resit, kdyz potrebuju alokovat pamet spravovanou pythonem, ale jeji velikost urci az C kod. Nakonec jsem zjistil, ze se dokonce pres ctypes da predat alokator jako funkce, takze C API bere na vstupu misto bufferu alokator a vola si ho podle potreby. Ten alokator pri vykonavani zase prepne zpatky do Pythonu, vytvori normalni managed buffer pozadovane velikosti, a vrati ho do C.
Neni to hezke, ale rekl bych, ze je to asi spravny postup, protoze to pak na strane Pythonu uz nevyzaduje zadne specialni chovani se k tem bufferum.