当前位置:网站首页>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事件。因此,该函数不会导致调用回调。
边栏推荐
- Why learn service grid istio
- CLIP还能做分割任务?哥廷根大学提出一个使用文本和图像prompt,能同时作三个分割任务的模型CLIPSeg,榨干CLIP能力...
- 微信小程序 29 热搜榜的完善②
- Introduction of this course (Introduction to machine learning)
- Youfu network was invited to attend the 2022 national CIO conference and won the title of "CIO trusted brand"
- How to change the chords after the tune of the song is changed
- 基础乐理之音程的度数
- modelsim和quartus联合仿真PLL FIFO等IP核
- 无惧高温暴雨,有孚网络如何保您无忧?
- 鸿蒙-大喵计算画板-视频
猜你喜欢

网络数据包多层传输演示

SQL Server 2019 installation tutorial

微信小程序 27 进度条的动态实现和搜索框、热搜榜的静态搭建

聊聊接口性能优化的11个小技巧

小程序毕设作品之微信校园维修报修小程序毕业设计成品(6)开题答辩PPT

Wechat campus maintenance and repair application applet graduation design finished product of applet completion work (6) opening defense ppt

Common development software download addresses

Wechat campus maintenance application applet graduation design finished product of applet completion work (8) graduation design thesis template

鸿蒙-大喵计算画板-简介

Pymoo学习 (5):收敛性分析
随机推荐
“未来杯”第二届知识图谱锦标赛正式启动
Swift 基础 Codable(JSONEncoder JSONDecoder)的使用
高端旗舰投影仪选购指南:当贝X3 Pro、当贝F5观影更沉浸!
小程序毕设作品之微信校园维修报修小程序毕业设计成品(8)毕业设计论文模板
某公司网络设计与规划
Solve the problem that the win10 account has no administrator rights
Flutter 小技巧之优化你使用的 BuildContext
[record of question brushing] 21. Merge two ordered linked lists
【919. 完全二叉树插入器】
I3 status configuration
Based on easycv to reproduce Detr and dab-detr, the correct opening method of object query
小程序毕设作品之微信校园维修报修小程序毕业设计成品(3)后台功能
Clip can also do segmentation tasks? The University of Gottingen proposed a model clipseg that uses text and image prompt and can do three segmentation tasks at the same time, squeezing out the clip a
telnet安装以及telnet(密码正确)无法登录!
Leetcode skimming: dynamic programming 07 (different binary search trees)
How to change the chords after the tune of the song is changed
CRM configuration item command notes
Modelsim and quartus jointly simulate PLL FIFO and other IP cores
Hongmeng - Damiao computing Sketchpad - VIDEO
Improvement of wechat applet 29 hot search list ②