WSSetAllocParameter (C 函数)

void WSSetAllocParameter(WSEnvironmentParameter p,WSAllocator a,WSDeallocator d)

设置在 WSEnvironmentParameter 对象 p 中由 ad in 指定的内存分配和释放器,一边稍后与 WSInitialize() 一起使用.

更多信息

  • 使用 WSSetAllocParameter() 在 WSTP 程序库中安装特殊的内存分配器. 该程序库将对所有动态内存分配使用由 ad 指定的分配器.
  • ad 必须具有与 C 内存分配器函数 malloc()free() 同样的调用签名.
  • ad 必须线程安全.
  • WSTP 的标头文件 wstp.h 已对 WSSetAllocParameter() 作出声明.

范例

基本范例  (1)

#include "wstp.h"

void * Custom_Allocator(size_t size)
{
    /* ... */
}

void Custom_Deallocator(void *ptr)
{
    /* ... */
}


int main()
{
    WSEnvironment env;
    WSEnvironmentParameter p;
    unsigned long revision;

    p = WSNewParameters(WSREVISION, WSAPIREVISION);
    if(p == (WSEnvironmentParameter)0))
    { /* unable to initialize the WSEnvironmentParameters object */ }

    WSSetAllocParameter(ep, Custom_Allocator, Custom_Deallocator);

    /* Install the Custom* memory allocator in WSTP. */
    env = WSInitialize(ep);
    if(env == (WSENV)0)
    { /* unable to initialize WSTP environment */ }

    WSReleaseParameters(p);

    /* ... */

    WSDeinitialize(env);
    return 0;
}