当前位置:网站首页>GBASE 8s UDR内存管理_02_mi_dalloc
GBASE 8s UDR内存管理_02_mi_dalloc
2022-07-25 19:21:00 【八珍豆腐】
函数mi_dalloc的作用是:在指定的内存持续时间内分配指定的内存量,并返回一个指向所分配块的指针。
1.语法
void *mi_dalloc (size, duration)
mi_integer size;
MI_MEMORY_DURATION duration;
size要分配的字节数。
duration
指定要分配的用户内存的内存持续时间的值。持续时间的有效值如下:
值 | 含义 |
PER_ROUTINE | 在UDR的一次迭代期间 |
PER_COMMAND | 执行当前子查询的持续时间 |
PER_STATEMENT (Deprecated) | 在当前SQL语句的持续时间内 |
PER_STMT_EXEC | 在当前SQL语句的执行期间 |
PER_STMT_PREP | 在当前准备的SQL语句的持续时间内 |
PER_TRANSACTION (Advanced) | 在一次事务期间 |
PER_SESSION (Advanced) | 在当前客户端会话期间 |
PER_SYSTEM (Advanced) | 在数据库服务器执行期间 |
在客户端LIBMI应用程序中有效? | 在用户定义的例程中有效? |
是(但是,应用程序忽略内存持续时间) | 是 |
2.用法
mi_dalloc()函数为一个DataBlade API模块分配大小字节数的共享内存。mi_dalloc()函数是一个用于用户内存的构造函数。这个函数的行为与mi_alloc()完全相同,只是mi_dalloc()允许您在分配时显式地指定内存持续时间。
服务器
对于C UDR中的大多数内存分配,duration参数必须是以下公共内存持续时间常数之一:
PER_ROUTINE(或PER_FUNCTION)
指定PER_ROUTINE,数据库服务器将在UDR返回时释放分配的内存。
PER_COMMAND
指定PER_COMMAND,数据库服务器将在子查询执行完成时释放内存。
PER_STMT_EXEC
指定PER_STMT_EXEC,数据库服务器将在SQL语句执行完成时释放内存。
PER_STMT_PREP
指定PER_STMT_PREP,数据库服务器将在准备好的SQL语句终止时释放内存。
提示:只有在常规内存持续时间不能安全执行需要完成的任务时,才在C UDR中使用高级内存持续时间。这些高级内存持续时间很长,会增加内存泄漏的可能性。
在C UDR中,当引发异常时,数据库服务器自动释放通过mi_dalloc()分配的内存。
重点:在C UDR中,使用DataBlade API内存管理函数来分配内存。使用DataBlade API内存管理函数可以确保数据库服务器能够自动释放内存,特别是在出现返回值或异常的情况下,例程无法释放内存。
当不再需要mi_dalloc()分配的内存时,UDR可以使用mi_free()显式地释放mi_dalloc()分配的内存。
客户端
在客户端LIBMI应用程序中,mi_dalloc()的工作原理与malloc()完全相同:
存储分配在客户机进程的堆上。但是,数据库服务器不会自动释放此内存。因此,客户端LIBMI应用程序必须使用mi_free()函数显式地释放mi_dalloc()进行的所有分配。客户机LIBMI应用程序忽略内存持续时间。
在回调函数中,调用mi_dalloc()请求PER_COMMAND的持续时间将返回NULL。因此,回调函数必须调用mi_dalloc(),其持续时间为PER_ROUTINE。
mi_dalloc()函数返回一个指向新分配内存的指针。转换此指针以匹配您分配的用户定义缓冲区或结构的结构。
3.返回值
指向新分配内存的指针。强制转换此指针以匹配为其分配内存的用户定义缓冲区或结构。
NULL函数无法分配内存。
mi_dalloc()函数在遇到运行时错误时不会抛出MI_Exception事件。因此,该函数不会导致调用回调。
边栏推荐
- Real estate enterprises have launched a "war of guarantee"
- Talk about 15 tips of SQL optimization
- [web technology] 1391 page visualization building tool, previous life and present life
- 微信小程序 29 热搜榜的完善②
- C 调的满级和玄
- Eve - 0day Threat Intelligence
- MySQL sub query (selected 20 sub query exercises)
- 解决Win10账户没有了管理员权限
- Gan, why ".Length! == 3??
- 小程序毕设作品之微信校园维修报修小程序毕业设计成品(4)开题报告
猜你喜欢

Why learn service grid istio
![[record of question brushing] 21. Merge two ordered linked lists](/img/81/5f1ab0054ef5e8cba32f7a546a64c4.png)
[record of question brushing] 21. Merge two ordered linked lists

Empire CMS whole station | mobile number /qq lianghao mall source code | suitable for mobile terminal

MES管理系统有什么应用价值

房企打响“保交战”

基于PHP的中非南南合作信息交流平台网站建设

What is the application value of MES management system
![[help center] provide your customers with the core options of self-service](/img/66/5a927e3bdcc165b78d4a9dee324871.png)
[help center] provide your customers with the core options of self-service

Dynamic implementation of wechat applet 27 progress bar and static construction of search box and hot search list

基础乐理--配置和弦
随机推荐
qt之编译成功但程序无法运行
KCon 2022 亮点及议程大揭秘!
kubernetes RBAC
ERROR: role “admin“ cannot be dropped because some objects depend on itDETAIL:
Wechat campus maintenance application applet graduation design finished product of applet completion work (3) background function
乐理基础 调式
Pymoo learning (8):grades
InTouch advanced alarm (alarm filtering)
Pymoo学习 (7):并行化Parallelization
Small program completion work wechat campus maintenance application small program graduation design finished product (2) small program function
基于Mysql-Exporter监控Mysql
某公司网络设计与规划
600000 pieces of data are made from March 1 to March 31. Videodate requires starting time from 00:00 to 24:00 on March 1 to 31, which is only for notes
Talk about 15 tips of SQL optimization
Single arm routing experiment demonstration (Huawei router device configuration)
微信小程序 27 进度条的动态实现和搜索框、热搜榜的静态搭建
Wechat campus maintenance and repair applet graduation design finished product (5) assignment of applet completion work
[Detr for 3D object detection] 3detr: an end to end transformer model for 3D object detection
[encryption weekly] has the encryption market recovered? The cold winter has not thawed yet! Check the major events in the encryption market last week!
The second "future Cup" knowledge map championship was officially launched