python字符串驻留机制,python字符串保留符号
1、说明
清除函数从内部字典遍历所有字符串,调整这些对象的引用计数,并将它们标记为没有被拘留,这样垃圾回收就可以了。当所有的字符串都被标记为未被拘留时,将清空并删除拘留字典。
2、清理实例
这个清理函数就是_PyUnicode_ClearInterned,在unicodeobject.c中定义。
空的
_ py unicode _ clear interned(PyThreadState * tstate)
{
..
//Getallthekeystotheinterneddictionary
py object * Keys=py dict _ Keys(interned);
..
//internedunicodestringsarenotforiblydeallocated;
//相反,我们给他们他们的stolenreferencesback
//和然后clearanddecreftheinternetdict .
for(Py _ ssize _ ti=0;在;i ){
py object * s=PyList _ GET _ ITEM(keys,I);
..
开关(py unicode _ CHECK _ INTERNED)){
案例状态_拘留_不道德:
Py_SET_REFCNT(s,Py _ ref CNT(s)1);
打破;
案例状态_拘留_死亡:
//restorethetworreferences(键和值)被忽略
//bypy unicode _ interinplace().
Py_SET_REFCNT(s,Py _ ref CNT(s)2);
打破;
caseSSTATE _ NOT _ INTERNED:
/*失败*/
默认:
py _ UNREACHABLE();
}
//markingthestringtobeNOT _ INTERNED
_PyUnicode_STATE .interned=SSTATE _ NOT _ INTERNED
}
//decreasingthereferencetotheinitializedand
//accesskeysobject .
py _ DECREF(keys);
//clearingthedictionary
PyDict_Clear(被拘留);
//clearingtheobjectinterned
Py_CLEAR(实习);
}以上就是计算机编程语言清理驻留字符串的方法,希望能对大家有所帮助。更多计算机编程语言学习指路:python基础教程
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。