努力解决问题#3367795在这里所以我必须应付一些子问题。这些是一个:在所述算法(Levenshtein距离),几个阵列在内存中分配和与所述线为什么这些C/Cython数组定义为字符而不是整数数组?
cdef char *m1 = <char *>calloc( blen + 2, sizeof(char))
cdef char *m2 = <char *>calloc( blen + 2, sizeof(char))
cdef char *m3 = <char *>malloc((blen + 2) * sizeof(char))
#.........................................................................
for i from 0 <= i <= blen:
m2[ i ] = i
<...snip...>
blen
这里指的是一个Python bytes
可变的长度初始化。现在据我了解算法(请参阅我的原始文章的完整代码)和m2
的初始化代码清楚地表明,这些数组是为了保存整数数字,而不是字符,所以人们会认为正确的分配应该看起来像
cdef int *m3 = <int *>malloc((blen + 2) * sizeof(int))
等等。任何有C背景的人都可以向我解释为什么使用char
?另外,也许更倾向于Cython的人,为什么会有演员表<char *>
?人们会认为char *x = malloc(...)
应该足以定义x
。
thx;您的评论对我而言不可见。我添加了一个编辑来回答这个问题。 – flow 2010-07-31 21:53:33
@flow:它在您看到的评论结尾会显示(1)您将看到“显示1条评论”(2)您将被页面顶部的小信封图标通知到新评论在你的名字旁边高亮 – 2010-07-31 22:31:37
你是对的。这太微妙了。 – flow 2010-08-01 22:05:23