栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言初识malloc和memset

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
#include 
void main()
{
   char buffer[] = "This is a test of the memset function";

   printf( "Before: %sn", buffer );
   memset( buffer, '*', 4 );
   printf( "After:  %sn", 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));

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352483.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号