微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我在`inputmatrix`函数中调用时,它的说法是分段错误我确保指针数组指向有效的内存空间

如何解决当我在`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 举报,一经查实,本站将立刻删除。