如何解决当我在`inputmatrix`函数中调用时,它的说法是分段错误我确保指针数组指向有效的内存空间
使用from nltk.tokenize import word_tokenize
def nltk_pos(text):
token = word_tokenize(text)
return (nltk.pos_tag(token)[0])[1]
nltk_pos('home')
output: 'NN'
expected output: 'NOUN'
函数输入第一个矩阵时出现错误。我是错误地传递了论点吗?
inputmatrix
解决方法
您声明了 a
函数的参数inputmatrix
是指向int
的10个指针的数组–但是您尚未为其分配任何指针值。结果,您使用了随机的,未知的指针值,指向任意位置,因此触发了未定义行为。
您很幸运,您使用的指针显然指向内存的不可访问区域,因此是分段违规。否则您的程序可能会假装它正常工作,然后在其他地方崩溃……
编辑
但是,实际的错误并没有缺少指针初始化,而是忽略了编译器关于传递不兼容类型的参数的警告,因此,迫使程序将不是指针的数据解释为指针数据。我已经在https://www.onlinegdb.com/的在线GDB编译器中测试了呼叫线路,它说:
main.c:12:6:注意:预期为“ int **”,但参数的类型为“ int(*)[10]”
a
中的main()
变量是一个10 x 10的数组,它是存储在连续内存块中的100个int
值。 OTOH inputmatrix
期望由10个 pointers 组成的数组,每个指针在其他地方指向一个int
(或一组int
值)
传递给函数的参数的实际类型不是int
所声明的“指向int *a[10]
的10个元素的指针数组”,而是“指向10个元素的指针”整数数组,应声明为int (*a)[10]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。