C语言初识malloc和memset

一、什么是malloc函数

1.malloc

是c标准库中提供的一个普通函数,分配一块连续的内存,并常与free函数一起使用。(free函数的作用是释放创建的空间)

2.malloc的返回值

malloc 返回一个指向分配空间的 void 指针,如果可用内存不足,则返回 NULL。 要返回指向除 void 类型以外的类型的指针,请对返回值使用类型转换。

返回值指向的存储空间保证适当对齐以存储任何类型的对象。 如果 size 为 0,malloc 在堆中分配一个长度为零的项目并返回一个指向该项目的有效指针。 始终检查 malloc 的返回值,即使请求的内存量很小。

malloc的返回值是一个指针,指向一段可用内存的起始位置,指向一段可用内存的起始地址,多次调用malloc所分配的地址不能有重叠部分,除非某次malloc所分配的地址被释放掉malloc应该尽快完成内存分配并返回(不能使用NP-hard的内存分配算法)实现malloc时应同时实现内存大小调整和内存释放函数(realloc和free)

3.创建方式

p=(type*)malloc(sizeof(type)) (type*)是需要创建的数据类型的指针,sizeof(type)是创建数据类型的空间大小。当内存不再使用时,使用free()函数释放空间。

//创建int类型的内存空间
int*p=(int*)malloc(sizeof(int)*num);

(1)

malloc函数的作用是在内存中找到一段指定内存空间,并把起始位置的地址返回。而这一段内存空间可以是一个单独的指针,也可以是数组指针的首元素的地址。并且,这段空间在逻辑上是连续的,但在物理空间上可能不连续。

(2)释放空间

free(p)

二、memset函数

1.memst()

memset的作用是将某一块内存中的内容全部设置为指定的值。通常用于为新申请的内存做初始化工作。(作用的对象是一块内存)

 dest为内存的地址,int c是赋予的值,size_t count是需要赋值的字节长度。

#include <memory.h>
#include <stdio.h>
void main()
{
   char buffer[] = "This is a test of the memset function";

   printf( "Before: %s\n", buffer );
   memset( buffer, '*', 4 );
   printf( "After:  %s\n", buffer );
}

Output
Before: This is a test of the memset function
After:  **** is a test of the memset function

2.清空内容

struct student
{
    char name[20];
    int age;
    char sex[10];
};
struct student zhangsan={"张三",20,"男"};
//清空结构体的内容
memset(&zhangsan,0,sizeof(student);
int arr[10]={0};
memset(&arr,0,sizeof(arr));

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影中人lx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值