首页 > 编程知识 正文

c语言中malloc函数的用法,mallocsizeof用法

时间:2023-05-06 11:26:53 阅读:34957 作者:1220

无效*malloc(intsize );

说明: malloc适用于分配给系统指定大小字节的内存空间。 返回类型为void *. void *意味着类型未知的指针。 在c、c中,void *类型规定可以强制转换为其他类型的指针。

从函数声明中可以看出, malloc和new之间至少存在两个差异。 new返回指定类型的指针,并自动计算所需的大小。 例如,

int * p;

p=新的int; //返回类型为int *类型(整数指针),分配大小为sizeof ) int );

或:

int * parr;

parr=new int [100]; //返回类型为int *类型(整数指针),分配大小为sizeof (int ) ) 100;

Malloc必须由我们来计算,转换后,强制转换为实际类型的指针。

int * p;

p=(int* ) malloc ) sizeof (int );

首先,malloc函数返回void *类型。 写为:p=malloc(sizeof(int ) )时无法编译程序并报告错误:“无法将void *分配给int *型变量”。 因此

第二,此函数的实际参数为sizeof(int ),表示整数数据的大小。 写:的话

int*p=(int* ) malloc(1) 1;

也可以编译代码,但实际上内存空间只分配了一个字节。如果在其中存储整数,就会有三个字节的流浪汉,直接“住”在邻居家! "结果,后续存储器内的所有原始数据内容被删除。

malloc还可申请连续存储器,其实现new []的效果并指定所需存储器大小。

例如,如果分配100个int类型的空间:

int*p=(int* ) malloc ) sizeof(int ) ) 100 ); 分配可容纳//100个整数的内存空间。

不直接可见的另一点是,malloc只能分配存储器,不能初始化结果存储器,所以在得到的新存储器中该值是随机的。

除了分配和最终版本的不同方法外,还可以从malloc或new检索指针,以便在其他操作中保持一致性

=====================================

原型:扩展void * malloc (unsigned intnum _ bytes );

使用方法: #include

或#include

功能:分配num_bytes字节的存储器块

说明:如果分配成功,则返回指向分配内存的指针。 否则,返回空指针。

如果不再使用内存,请使用free ()函数释放内存块。

malloc语法为:指针名称=(数据类型* ) malloc (长度)在calloc头文件中,)数据类型* )表示指针。

样本:

//malloc.c

#包含

#包含

主() )

{

文字* p;

clrscr (; //清除屏幕

p=(char* ) malloc ) 100;

是if(p )

printf (“内存分配为: %x”,p );

其他

printf (“内存不足! n ";

free(p;

getchar (;

返回0;

}

=====================================

malloc ) )函数的工作原理

malloc函数的本质是具有将可用内存块连接到长列表的所谓空闲列表。 调用malloc函数时,它将在合并表中查找足以满足用户要求的内存块。 接着,将存储器块分为两部分。 一个块的大小与用户的请求相同,另一个块的大小为其馀字节。 然后,将分配给用户的内存传递给用户。 然后,如果有剩下的内存,则返回连接表。 调用free函数时,它将用户释放的内存块连接到free链。 最后,自由链被断开为许多小内存片段。 如果用户此时申请较大的内存片段,则自由链中可能没有满足用户要求的片段。 因此,malloc函数请求延迟,检查自由链上的内存片段并开始排序

本文来自电脑杂谈,转载请注明正文网站:

http://www.pc-温柔的声音.com/a/jisuanji Xue/article-254195-1.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。