python申请内存空间_[Python源码学习]之内存管理

Python 的内存管理架构(Objects/obmalloc.c):

_____ ______ ______ ________

[ int ] [ dict ] [ list ] ... [ string ] Python core |

+3 | | |

_______________________________ | |

[ Python's object allocator ] | |

+2 | ####### Object memory ####### | |

______________________________________________________________ |

[ Python's raw memory allocator (PyMem_ API) ] |

+1 | | |

__________________________________________________________________

[ Underlying general-purpose allocator (ex: C library malloc) ]

0 | |

0. C语言库函数提供的接口

1. PyMem_*家族,是对 C中的 malloc、realloc和free 简单的封装,提供底层的控制接口。

2. PyObject_* 家族,高级的内存控制接口。

3. 对象类型相关的管理接口

PyMem_*

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

Python 对C中的 malloc、realloc和free 提供了简单的封装:

C

Python宏

malloc

PyMem_Malloc

PyMem_MALLOC

realloc

PyMem_Realloc

PyMem_REALLOC

free

PyMem_Free

PyMem_FREE

为什么要这么多次一举:

不同的C实现对于malloc(0)产生的结果有会所不同,而PyMem_MALLOC(0)会转成malloc(1).

不用的C实现的malloc与free混用会有潜在的问题。python提供封装可以避免这个问题。

Pyth

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值