《Python原始碼剖析》閱讀筆記 第二章 整數物件

2021-06-08 15:16:01 字數 677 閱讀 6902

整數物件定義:

typedef struct pyintobject;

可以看到僅多了乙個long域ob_ival來儲存整數。之所以用long,是因為這裡用long最高的符號位作為溢位標記位。

整數物件記憶體管理機制:

1. 小整數:在[ -nsmallnegints, nsmallposints )範圍內的整數定義為小整數,快取在物件池中,在python執行過程中不會被銷毀,用於快速引用(比如用於迴圈變數時)。其值範圍可以手工指定,但是得重新編譯**

2. 普通整數:除了小整數範圍內的整數都為普通整數,儲存在通過由block_list鍊錶鏈結起來的物件池中。

struct _intblock ;

typedef struct _intblock pyintblock;

static pyintobject *free_list = null;

由free_list空閒鍊錶將未使用的objects記憶體鏈結起來。注意,在free_list中,由ob_type域充當指向下一節點的指標,顯然這裡放棄了型別安全。並且煉表表頭在陣列尾部。

每次需要申請乙個整數物件,從free_list表頭摘取乙個物件,再將free_list指向下乙個元素。

當乙個物件的記憶體被**時,重新將該物件鏈入free_list。

小整數由於首先被初始化,所以位於block_list鍊錶尾端

閱讀STL原始碼剖析筆記 vector

初步閱讀vector 的摘要原始碼,我找到了一些我覺得挺重要的東西,在stl原始碼剖析裡面,vector 的實現中有這麼幾個函式 void push back const t x else iterator erase iterator position finish destroy finish ...

python原始碼剖析 Python原始碼剖析

第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...

python原始碼剖析筆記(一)

define pyobject head pyobject head extra py ssize t ob refcnt struct typeobject ob type define pyobject var head pyobject head py ssize t ob size numb...