python記憶體分配機制

2021-08-20 07:27:40 字數 925 閱讀 1660

python中數值型別是不可變物件,當程式試圖改變資料的值時,程式會重新生成新的資料,而不是改變原來的資料。

python函式的引數都是物件的引用,如果在引用不可變物件時嘗試修改物件,程式會在函式中生成新的物件(開闢新的位址空間),函式外被引用的物件則不會被改變。

num=1

defadd

(num):

num+=1

print(num)

//1

如果想改變num的值,可以通過函式返回值來實現

l = [1, 2]

defadd

(list):

add(l)

print(l)

//[1, 2, 3]

這裡因為函式的引數是引用

深複製和淺複製

1.copy.copy,僅僅複製父物件

2.copy.deepcopy,複製父物件和子物件

import

copy

list1=[1

,2,['a','b']]

list2=list1

list3=copy.copy(list1)

list4=copy.deepcopy(list1)

(3)print(list1,'\n',list2,'\n',list3,'\n',list4)

# [1,2, ['a', 'b', 'c'],3]

# [1,2, ['a', 'b', 'c'],3]

# [1,2, ['a', 'b', 'c']]

# [1,2, ['a', 'b']]

C C 記憶體分配機制

1.c語言中的記憶體機制 在c語言中,記憶體主要分為如下5個儲存區 1 棧 stack 位於函式內的區域性變數 包括函式實參 由編譯器負責分配釋放,函式結束,棧變數失效。2 堆 heap 由程式設計師用malloc calloc realloc分配,free釋放。如果程式設計師忘記free了,則會造...

memcached記憶體分配機制

memcached slab allocator分配機制 slab allocator的基本原理是按照預先規定的大小,將分配的記憶體分割成特定長度的塊,以完全解決記憶體碎片問題。slab allocation的原理相當簡單,就是將分配的記憶體分割成各種尺寸的塊 chunk 並把尺寸相同的塊分成組 c...

Memcache記憶體分配機制

1.page 頁 為記憶體分配的最小單位 memcached 的記憶體分配以page為單位,預設情況下乙個page是1m,可以通過 i引數在啟動時指定。如果需要申請記憶體時,memcached會劃分出乙個新的page並分配給需要的slab區域。page一旦被分配在重啟前不會被 或者重新分配 2.sl...