当前位置: 首页 > 工具软件 > Carbon > 使用案例 >

Carbon学习笔记(1)

申屠昌胤
2023-12-01
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函数。

 类似资料: