Carbon學習筆記 1

2021-04-06 16:59:29 字數 2061 閱讀 1737

carbon的記憶體管理函式學習

1)在早期的mac os 8/9作業系統採用

分配和釋放固定大小的記憶體

ptr   newptr(size bytecount);

ptr   newptrclear(size bytecount);

void  disposeptr(ptr p);

分配和釋放可變的記憶體

handle  newhandle(size bytecount);

handle  newhandleclear(size bytecount);

handle  newemptyhandle(void);

handle  newemptyhandlesys(void);

void    disposehandle(handle h);

改變固定和可變大小記憶體

size  getptrsize(ptr p);

void  setptrsize(ptr p,size newsize);

size  gethandlesize(handle h);

void  sethandlesize(handle h,size newsize);

設定可變記憶體的屬性

void   hlock(handle h);

void   hunlock(handle h);

void   hpurge(handle h);

void   hnopurge(handle h);

sint8  hgetstate(handle h);

void   hsetstate(handle h,sint8 flags);

管理可變記憶體

void    emptyhandle(handle h);

void    reallocatehandle(handle h,size bytecount);

handle  recoverhandle(ptr p);

void    reservemem(size cbneeded);

void    movehhi(handle h);

void    hlockhi(handle h);

操作記憶體塊

void   blockmove(const void *srcptr,void *destptr,size bytecount);

void   blockmovedata(const void *srcptr,void *destptr,size bytecount);

oserr  ptrtohand(const void *srcptr,handle *dsthndl,long size);

oserr  ptrtoxhand(const void *srcptr,handle dsthndl,long size);

oserr  handtohand(handle *thehndl);

oserr  handandhand(handle hand1,handle hand2);

oserr  ptrandhand(const void *ptr1,handle hand2,long size);

分配主要指標

void  moremasterpointers(uint32 incount);

訪問記憶體環境和釋放記憶體

long  freemem(void);

void  purgemem(size cbneeded);

size  maxmem(size *grow);

long  maxblock(void);

void  purgespace(long *total,long *contig);

long  stackspace(void);

size  compactmem(size cbneeded);

檢查錯誤

oserr  memerror(void);

2) 在新的mac os x採用

1) cfallocator提供的api

由於我們現在的大部分程式是採用c或c++來書寫,所以非常小的使用這些函式,幾乎在程式都不大可能用到,用到最多還是c和c++提供的malloc和new函式。

學習筆記1

struct test test int x void fun class test1 test1 int x void fun int main void test1 a 行1 a.fun 行2 test1 b 行3 b.fun 行4 test c 行5 c.fun 行6 test d 行7 d....

學習筆記1

1 字串原地逆序 使用臨時變數 void reverse string s 5 求平均值 避免溢位 int f int x,int y 6 楊氏矩陣 bool young int a m n int x return false 7 十進位制轉十六進位制 string decimaltohexade...

學習筆記1

第二單元 linux的基本操作 1.改變使用者的密碼 passwd命令 注 a.只有root使用者可以修改其他使用者的密碼。普通使用者只能修改自己的密碼,且密碼必須設定地較為複雜,否則修改不成功 b.若執行passwd命令時後面不加使用者名稱,表示的是修改當前使用者的密碼。2.系統使用者的分類 注 ...

學習筆記。1

login.php 接收 errno的值 if empty get errno loginprocess.php 接受使用者資料 id post id 2.密碼 password post password 到資料庫去驗證,mysql擴充套件庫,mysqli擴充套件庫 1。得到連結 1.得到連線 c...

學習筆記1

使用的模組 import tensorflow as tf import numpy as np 計算圖 tf.get default graph 獲取當前預設的計算圖 a.graph 檢視張量所屬的計算圖 g1 tf.graph 生成新的計算圖 with g1.as default 把g1設定為預...