check malloc return - if null call PyErr_NoMemory()