1

在下面的代码中,我试图将两个以 null 结尾的 C 字符串(字符指针)打包到一个 Python 元组中。

printf("word1 = '%s', word2 = '%s'\n", words1->wordArray[i], words2->wordArray[i]);
cmpArgs = Py_BuildValue("ss", words1->wordArray[i], words2->wordArray[i]);
printf("%s\n", PyString_AsString(PyTuple_GetItem(cmpArgs, 0)));

这会产生如下输出:

word1 = '20', word2 = '20'
i┴

为什么元组中的字符串与外部的字符串不同?我究竟做错了什么?另外,我需要担心增加和减少这个元组的引用计数吗?(我正在创建它以传递给作为 PyObject* 传递给 C 的 Python 函数)

4

1 回答 1

1

我想我明白了——我以前使用堆栈空间以一种奇怪的方式存储单词。我开始为他们手动分配堆上的空间,这似乎已经修复了。

于 2012-11-01T19:56:19.550 回答