MLSetAllocParameter (C 函数)
MLSetAllocParameter 已经被 WSSetAllocParameter 所取代.
void MLSetAllocParameter(char* p,MLAllocator a,MLDeallocator d)
设置在 MLParameters 对象 p 中由 a 和 d 指定的内存分配和释放器,以便稍后与 MLInitialize()一起使用.
更多信息
- 使用 MLSetAllocParameter() 在 MathLink 程序库中安装特殊的内存分配器. 该程序库将对所有动态内存分配使用由 a 和 d 指定的分配器.
- a 和 d 必须具有与 C 内存分配器函数 malloc() 和 free() 同样的调用签名.
- a 和 d 必须线程安全.
- MLSetAllocParameter() 在 MathLink 标头文件 mathlink.h 中被声明.
范例
基本范例 (1)
#include "mathlink.h"
void * Custom_Allocator(size_t size)
{
/* ... */
}
void Custom_Deallocator(void *ptr)
{
/* ... */
}
int main()
{
MLEnvironment env;
MLEnvironmentParameter p;
unsigned long revision;
p = MLNewParameters(MLREVISION, MLAPIREVISION);
if(p == (MLEnvironmentParameter)0))
{ /* unable to initialize the MLEnvironmentParameters object */ }
MLSetAllocParameter(ep, Custom_Allocator, Custom_Deallocator);
/* Install the Custom* memory allocator in MathLink. */
env = MLInitialize(ep);
if(env == (MLENV)0)
{ /* unable to initialize MathLink environment */ }
MLReleaseParameters(p);
/* ... */
MLDeinitialize(env);
return 0;
}