mi_zalloc()函数分配并零填充给定大小的内存块,并返回指向指定大小的用户内存块的指针。
语法
Void *mi_zalloc (size)
mi_integer大小;size要分配和用0填充的字节数。
在客户端LIBMI应用程序有效
在用户定义例程中有效
用法
mi_zalloc()函数为DataBlade API模块分配用户内存的字节数。mi_zalloc()函数的行为与mi_alloc()函数完全相同,不同的是mi_zalloc()在返回指向内存的指针之前,用0填充分配的内存块。mi_zalloc()函数是一个用于用户内存的构造函数。
服务器
mi_zalloc()函数在当前内存持续时间内分配内存。缺省情况下,当前的缺省持续时间为PER_ROUTINE。在C UDR中,当引发异常时,数据库服务器也会自动释放通过mi_zalloc()分配的内存。使用DataBlade API内存管理函数,例如mi_zalloc(),在C UDR中分配内存。
使用DataBlade API内存管理功能可以确保数据库服务器自动释放内存,特别是在出现返回值或异常的情况下,如果UDR不使用其他方法就无法释放内存。仅限客户端:在客户端LIBMI应用程序中,mi_zalloc()的工作原理与malloc()完全相同:它在客户端进程的堆上分配存储空间。但是,数据库服务器不执行任何自动垃圾收集。因此,客户端LIBMI应用程序必须使用mi_free()函数显式地释放mi_zalloc()进行的所有分配。
客户端
在客户端LIBMI应用程序中,mi_zalloc()的工作原理与malloc()完全相同:它在客户端进程的堆上分配存储空间。但是,数据库服务器不执行任何自动垃圾收集。因此,客户端LIBMI应用程序必须使用mi_free()函数显式地释放mi_zalloc()进行的所有分配。客户机LIBMI应用程序忽略内存持续时间。客户机LIBMI应用程序可以使用DataBlade API内存管理函数或系统内存管理函数(例如malloc())。
mi_zalloc()函数返回一个指向新分配内存的指针。转换此指针以匹配您分配的用户定义缓冲区或结构的结构。当不再需要mi_zalloc()分配的内存时,DataBlade API模块可以使用mi_free()函数来释放由mi_zalloc()分配的内存。