Max 5 API Reference
Max API では、クロスプラットフォームなメモリ管理呼び出しを提供しています。
呼び出しには、ポインタ用、およびハンドル用の2つのタイプがあります。ハンドルはポインタへのポインタで、参照を変更せずにメモリの再割り当てができるように、初期の MacOS で使用されていました。そして、多くの MacOS の API 呼び出しではハンドルが使用されています。同様に、いくつかの古いタイプの Max API 呼び出しでもハンドルを使用していますが、一般的には、OS や Max がハンドルの使用を要求するのでない限り、よりシンプルなポインタを使用するほうが良いでしょう。
これまで長い間、Max オブジェクトのプログラマは、メモリ呼び出しに getbytes() や freebytes() を使ってきたことと思います。しかし、現在ではすべてのメモリ呼び出しは、OS のメカニズムを基にしたものを同様に使用しています。現在でも getbytes() や freebytes() はサポートされていますが、これらは使用するアーギュメントのために 32KB あるいはそれ以下のメモリに制限されてしまいます。そのため、 代わりに sysmem_newptr() や sysmem_freeptr() の使用を推奨します。
次の例では、ポインタとハンドルにメモリを割り当て、開放しています。
char *ptr; char **hand; ptr = sysmem_newptr(2000); post("I have a pointer %lx and it is %ld bytes in size",ptr, sysmem_ptrsize(ptr)); ptr = sysmem_resizeptrclear(ptr, 3000); post("Now I have a pointer %lx and it is %ld bytes in size",ptr, sysmem_ptrsize(ptr)); sysmem_freeptr(ptr); hand = sysmem_newhandle(2000); post("I have a handle %lx and it is %ld bytes in size",hand, sysmem_handlesize(hand)); sysmem_resizehandle(hand, 3000); post("Now the handle %lx is %ld bytes in size",hand, sysmem_ptrsize(hand)); sysmem_freehandle(hand);