Есть ли какая-то разница в распределении памяти в Cython, как это
from libc.stdlib cimport malloc cdef int *ar = <int *>malloc(100 * sizeof(int))
и вот так
from libc.stdlib cimport malloc ar = <int *>malloc(100 * sizeof(int))
Без разницы. Последний просто полагается на способность Cython выводить тип ar, что должно быть довольно просто в этом случае. Если вывод типа завершится неудачей, вы получите сообщение об ошибке на этапе цитонизации.
ar