当前位置:网站首页>GBASE 8s UDR内存管理_01_mi_alloc
GBASE 8s UDR内存管理_01_mi_alloc
2022-07-25 19:21:00 【八珍豆腐】
函数mi_alloc()的作用是:分配指定大小的用户内存块,并返回指向该块的指针。
1.语法
void *mi_alloc(size)
mi_integer size;
size要分配的字节数。
在客户端LIBMI应用程序中有效? | 在用户定义的例程中有效? |
是 | 是 |
2.用法
函数mi_alloc()的作用是:为DataBlade API模块分配用户内存的字节数。mi_alloc()函数是用户内存的构造函数。
服务器端:从C用户定义例程的角度来看,该函数的行为类似于malloc()系统调用,只是数据库服务器可以回收mi_alloc()分配的内存。函数的作用是:在当前内存持续时间内分配内存。默认情况下,当前内存持续时间为PER_ROUTINE。使用PER_ROUTINE持续时间,数据库服务器在C UDR返回后释放分配的内存。
除回调例程外,您可以通过以下任一方式更改内存持续时间:
1,使用mi_dalloc()而不是mi_alloc()来分配内存。
mi_dalloc()函数的工作方式与mi_alloc()相同,并提供指定持续时间的选项。
2,在调用mi_alloc()之前,先调用mi_switch_mem_duration()。
函数mi_switch_mem_duration()用于更改所有后续内存分配的当前内存持续时间。
在UDR例程中,当引发异常时,数据库服务器自动释放用mi_alloc()分配的内存。
重要提示:在C UDR中,使用DataBlade API内存管理函数来分配内存。使用DataBlade API内存管理功能可以保证数据库服务器可以自动释放内存,尤其是在返回值或异常的情况下,否则例程将无法释放内存。
客户端:在客户端LIBMI应用程序中,mi_alloc()的工作方式与malloc()完全相同:它在客户端进程的堆上分配存储。数据库服务器不执行任何自动存储检索。客户端LIBMI应用程序必须使用mi_free()来显式释放mi_alloc()进行的所有分配。客户端LIBMI应用程序忽略内存持续时间。
客户端LIBMI应用程序可以使用DataBlade API内存管理函数或系统内存管理函数(如malloc())。
函数mi_alloc()的作用是:返回一个指向新分配的用户内存的指针。强制转换此指针以匹配用户定义的缓冲区或分配的结构。DataBlade API模块可以使用mi_free()来释放由mi_alloc()分配的内存(当不再需要该内存时)。
3.返回值
一个void指针。
指向新分配内存的指针。强制转换此指针以匹配为其分配内存的用户定义缓冲区或结构。
NULL
函数无法分配内存。
mi_alloc()函数在遇到运行时错误时不会引发MI_Exception事件。因此,它不会导致调用回调。
边栏推荐
- 有孚网络受邀参加2022全国CIO大会并荣获“CIO信赖品牌”称号
- iMeta | Sangerbox: 交互式整合临床生信分析平台
- 高并发下如何保证数据库和缓存双写一致性?
- The second "future Cup" knowledge map championship was officially launched
- Leetcode skimming: dynamic programming 07 (different binary search trees)
- Care for front-line epidemic prevention workers, Haocheng JIAYE and Gaomidian sub district office jointly build the great wall of public welfare
- [919. Complete binary tree inserter]
- Empire CMS whole station | mobile number /qq lianghao mall source code | suitable for mobile terminal
- 聚智云算,向新而生| 有孚网络“专有云”开启新纪元
- Openresty Lua resty mlcache multi-level cache
猜你喜欢

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

Talk about 15 tips of SQL optimization

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

QIIME2得到PICRUSt2结果后如何分析

小程序毕设作品之微信校园维修报修小程序毕业设计成品(2)小程序功能

The finished product of wechat campus maintenance and repair applet graduation design (1) development outline

乐理基础 调式

Basic music theory -- configuring chords

CLIP还能做分割任务?哥廷根大学提出一个使用文本和图像prompt,能同时作三个分割任务的模型CLIPSeg,榨干CLIP能力...

Intouch高级报警(报警筛选)
随机推荐
阿里云免费SSL证书申请详细流程
[919. Complete binary tree inserter]
虹科分享|如何解决勒索软件安全漏洞
Modelsim and quartus jointly simulate PLL FIFO and other IP cores
Improvement of wechat applet 28 hot search list ①
Flutter 小技巧之优化你使用的 BuildContext
Fruit chain "siege": it's a journey of sweetness and bitterness next to apples
How to ensure the consistency of double write between database and cache?
Real estate industry reshuffle
乐理基础 调式
一个函数中写多少行代码比较合适呢? 代码整洁之道
How to analyze qiime2 after obtaining picrust2 results
常用的开发软件下载地址
Wechat campus maintenance application applet graduation design finished product of applet completion work (8) graduation design thesis template
【DETR用于3D目标检测】3DETR: An End-to-End Transformer Model for 3D Object Detection
小程序毕设作品之微信校园维修报修小程序毕业设计成品(7)中期检查报告
[Detr for 3D object detection] detr3d: 3D object detection from multi view images via 3D-to-2D queries
Talk about 15 tips of SQL optimization
无惧高温暴雨,有孚网络如何保您无忧?
The difference between QT exec and show