8

私の知る限り、PyList_SetItemとPyList_SETITEMの違いは、PyList_SetItemは上書きするリスト項目の参照数を減らし、PyList_SETITEMは下げないことです。

いつもPyList_SetItemを使うべきではない理由はありますか?または、PyList_SetItemを使用してリスト内のインデックス位置を初期化すると、問題が発生しますか?

4

1 に答える 1

8

PyList_SET_ITEM基本的に、バインドされたチェックなしでオブジェクトをリストの内部ポインター配列に貼り付ける安全でないマクロです。NULLリストのi番目の位置に以外のものがあると、参照リークが発生します。PyList_SET_ITEMリストに入れたオブジェクトへの参照を盗みます。も参照を盗みますが、境界をチェックし、 th の位置PyList_SetItemにある可能性のあるものをすべて derefs します。i経験則は、PyList_SET_ITEM作成したばかりのリストを初期化するために使用されPyList_SetItemます。PyList_SetItemまた、どこでも安全に使用できます。PyList_SET_ITEM基本的にスピードハックです。

于 2012-04-24T20:43:19.563 に答える