首页 > 其他分享 >malloc()函数

malloc()函数

时间:2024-05-30 16:45:46浏览次数:22  
标签:malloc 函数 int 内存 NULL 指针

malloc()函数

malloc是动态内存分配函数,用于申请一块连续的指定大小的内存块区域,以void*类型返回分配的内存区域地址。

函数原型

void* malloc(unsigned int num_bytes);

分配长度为num_bytes字节的内存块。

使用时要包含头文件stdlib.h,也可以使用#include <malloc.h>,但并不建议,因为它不是标准的c库。

使用之前要计算出字节数,malloc开辟的是用户所需的字节数大小的空间。

函数返回值:分配成功则返回被分配内存的指针,否则返回空指针NULL。

注意事项:

返回类型为无类型指针,使用时要强制转换为所需要的类型。

指针自身 = (指针类型*) malloc (sizeof(指针类型)*数据数量)

int *p = NULL;
int n = 10;
p = (int *)malloc(sizeof(int)*n);//malloc()函数中的参数以字节为单位。
//内存分配成功返回内存首地址的指针,失败返回NULL。

image-20240520160345322

重点:在使用malloc开辟空间时,使用完成一定要释放空间,如果不释放就会造成内存泄漏,
什么是内存泄漏。在使用malloc函数开辟的空间中,不要进行指针的移动,因为一旦移动可能出现申请的空间和释放空间大小的不匹配。

free()函数

作用:释放malloc(或calloc、realloc)函数给指针变量分配的内存空间。完了之后要把指针指向NULL。(我的理解是被分配的这块内存被“赎身”了,成了一块自由内存,但是原来的指针还指向这块区域,如果这块内存后来被分配了其他信息,但是还可以通过原来的指针来访问到,那就出了大问题,莫名想起赵德汉的“是谁把钱放到我家冰箱的?”所以需要给原来的指针指向NULL。)

标签:malloc,函数,int,内存,NULL,指针
From: https://www.cnblogs.com/code321/p/18222655

相关文章

  • 莫比乌斯函数
    莫比乌斯函数定义\[\mu(x)=\left\{\begin{matrix}1&x=1\\(-1)^m&x=p_1\\0other\end{matrix}\right.\]求法方法1.直接暴力分解质因数太水了。方法2.埃氏筛\(O(n\log\logn)\)方法3.线性筛for(inti=2;i<=n;i++){ if(!is_prime[i]){ prime[++cnt]=i;......
  • C++入门 类(构造函数 & 析构函数 & 显式调用)
    目录类的6个默认成员函数 构造函数特性函数名与类名相同无返回值(不需要写void) 无参构造函数和带参构造函数 构造函数可以重载编译器自动生成构造函数 默认构造函数 实践总结析构函数 显式调用隐式调用 特性 析构函数名是在类名前加字符~ 无参数无返......
  • SQL KEEP 窗口函数等价改写案例
    一哥们出条sql题给我玩,将下面sql改成不使用keep分析函数的写法。selectdeptno,ename,sal,hiredate,min(sal)keep(dense_rankfirstorderbyhiredate)over(partitionbydeptno)min_sal,max(sal)keep(dense_ranklastorderby......
  • 三维前端开发项目中Threejs的THREEScene函数详解
    THREE.Scene函数用于创建一个场景对象。大家好!艾斯视觉作为在IT行业中负责ui设计和前端开发环节的服务商很高兴能在这里与大家共同探讨学习:场景是Three.js中所有图形元素的容器,它可以包含相机、光源、几何体、材质等。创建场景对象的基本语法如下:constscene=newTHREE.S......
  • 激活函数和正则化
    1.常用的激活函数及特点常用的激活函数有:ReLU、Sigmoid、Tanh等ReLU激活函数具有:简单、线性相关性和非线性增长等特点Sigmoid激活函数具有:非线性和可导性等特点Tanh激活函数具有:非线性和可导性等特点2.正则化方法和防止过拟合的技巧正则化方法包括:L1正则化和L2正则化防......
  • 如何初始化 FIrebase 云函数,以便使用凭据和 JSON 验证 Firebase Admin SDK 服务账户?
    我觉得我已经阅读了所有可用的资料,但我仍然无法理解这一点。我非常喜欢Google的产品,但有时其文档的简洁性令人头疼。我阅读了这个令人难以置信的雄辩答案,这个答案的作者和我一样毫无头绪,但他觉得有必要写一本循序渐进的儿童指南。不幸的是,他的回答过于针对他的项目,而不是我的项......
  • spark sql中的FORMAT_NUMBER和ROUND函数
    一、例子:FORMAT_NUMBER(ROUND(value,2),'0.00')二、ROUND函数的作用:用于将数值字段舍入到指定的小数位数,如果未指定小数位数,则默认将数字舍入到最接近的整数。三、FORMAT_NUMBER函数的作用:用于将数字格式化为指定的格式,而不是进行舍入。四、两者的区别:如果小数点后面的数字,最......
  • Kotlin 标准函数 with、run、apply 的定义和使用
    Kotlin标准函数 with、run、apply 的定义和使用1. with 函数定义:with 函数允许你在一个对象的上下文中执行一个lambda表达式,而不需要在lambda表达式中重复引用该对象。@kotlin.internal.InlineOnlypublicinlinefun<T,R>with(receiver:T,block:T.()->R......
  • spark sql实现“平均月活”和“平均周活”及相关函数
    一、平均月活:SELECTdate_format(time,'yyyy-MM')AScurrent_month,COUNT(DISTINCTuser_id)ASmonth_active_user_numFROMtableWHEREtime>=trunc(now(),'YEAR')GROUPBYdate_format(time,'yyyy-MM');二、平均周活:WITHweek_......
  • 合约之间调用-如何实现函数静态调用?
    合约之间的函数调用EOA,externalownedaccount,外部账号,例如metamask调用最终总是由EOA发起的合约之间的调用使得一次完整的调用成为一个调用链条合约间调用过程调用者须持有被调用合约的地址得到被调用合约的信息将地址重载为被调用合约,调用它的函数最直接的调用方式(源......