C语言生命错误(未声明)导致函数返回值阶段

拿C语言开开心心写了个库,准备拿Python调用,结果始终不对,回去用C语言调用测试,果断段错误。

动态库返回一个分配的数组,主函数接收这个指针,gdb调试发现在库代码里还能正常访问,一旦返回就段错误。 开始以为是动态库的问题,New Bing 信誓旦旦和我说动态库卸载导致内存被释放,结果我改成静态库也不行。

后来仔细比对发现返回后的指针好像被截断了,只有后四个字节,于是想到没有在头文件声明函数,于是编译器默认返回了四个字节,加上声明,问题解决。

回到Python代码,发现ctype声明时某个参数类型写错了,改正就好了。

好久没有调动态库了,有些细节都生疏了。尤其是用Python调C,没办法同时调试两个代码,就很麻烦。

Built with Hugo
Theme Stack designed by Jimmy