国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

從Python的源碼淺要剖析Python的內存管理

2020-02-23 00:44:55
字體:
來源:轉載
供稿:網友

Python 的內存管理架構(Objects/obmalloc.c):
代碼如下:
    _____   ______   ______       ________
   [ int ] [ dict ] [ list ] ... [ string ]       Python core         |
+3 | <----- Object-specific memory -----> | <-- Non-object memory --> |
    _______________________________       |                           |
   [   Python's object allocator   ]      |                           |
+2 | ####### Object memory ####### | <------ Internal buffers ------> |
    ______________________________________________________________    |
   [          Python's raw memory allocator (PyMem_ API)          ]   |
+1 | <----- Python memory (under PyMem manager's control) ------> |   |
    __________________________________________________________________
   [    Underlying general-purpose allocator (ex: C library malloc)   ]
 0 | <------ Virtual memory allocated for the python process -------> |
 

    0. C語言庫函數提供的接口

    1. PyMem_*家族,是對 C中的 malloc、realloc和free 簡單的封裝,提供底層的控制接口。

    2. PyObject_* 家族,高級的內存控制接口。
    3. 對象類型相關的管理接口

PyMem_*

PyMem_家族:低級的內存分配接口(low-level memory allocation interfaces)

Python 對C中的 malloc、realloc和free 提供了簡單的封裝:

201541692301579.jpg (301×158)

為什么要這么多次一舉:

    不同的C實現對于malloc(0)產生的結果有會所不同,而PyMem_MALLOC(0)會轉成malloc(1).     不用的C實現的malloc與free混用會有潛在的問題。python提供封裝可以避免這個問題。         Python提供了宏和函數,但是宏無法避免這個問題,故編寫擴展是應避免使用宏

源碼:

  Include/pymem.h#define PyMem_MALLOC(n) ((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL /             : malloc((n) ? (n) : 1))#define PyMem_REALLOC(p, n) ((size_t)(n) > (size_t)PY_SSIZE_T_MAX ? NULL /              : realloc((p), (n) ? (n) : 1))#define PyMem_FREE free  Objects/object.c/* Python's malloc wrappers (see pymem.h) */void *PyMem_Malloc(size_t nbytes){  return PyMem_MALLOC(nbytes);}...            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 留坝县| 龙州县| 乌鲁木齐市| 永福县| 利辛县| 清苑县| 黄冈市| 蓬安县| 运城市| 株洲市| 洪洞县| 格尔木市| 沾益县| 万山特区| 诸城市| 铁岭市| 连山| 清新县| 房山区| 高唐县| 山阳县| 孝感市| 清徐县| 夏邑县| 兴海县| 开原市| 贺兰县| 西昌市| 合阳县| 札达县| 东兰县| 北京市| 永平县| 揭阳市| 花莲县| 仪征市| 闽清县| 安阳市| 丰城市| 交城县| 离岛区|