C++ モジュールを作成して、Python コードを拡張しようとしています。Python で「import my_code」を呼び出すことで、問題なく C++ コードをインポートできます。PyObject を返そうとすると問題が発生します。C++ コードから作成したベクトル *settled_nodes_vector を取得し、そのベクトルからのデータをバイナリ データとしてバッファーに書き込み、そのバッファーを返します。今、私はこれをやっています:
PyBuffer_FromReadWriteMemory((void *) settled_nodes_vector->data(), settled_nodes_vector->size() * sizeof(result_node)));
そして、Pythonで次を呼び出すと
>>> import my_module
>>> result = my_module.make_buffer()
>>> result
<read-write buffer ptr 0x7fae708c5010, size 20335840 at 0x7fae899577b0>
>>> len(result)
20335840
>>> result[0]
92121 Segmentation fault (core dumped) python -i
したがって、私の質問は、長さがゼロでない場合、結果で情報にインデックスを付けることができないのはどうしてですか。