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

C - malloc

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

C - malloc

C语言–备忘

C - 内存分配
  • C语言--备忘
  • 一、C 内存分配
    • 1. 变量:
    • 2. 数组:
    • 3. Struct:
    • 4. malloc 和 free:
      • 1. malloc 函数
      • 2. free 函数
      • 3. 举例使用:
  • 总结:


一、C 内存分配 1. 变量:
  1. 缺点:不能分配大量内存;[static, const, 动态,全局]
2. 数组:
  1. 数组:数据类型相同,可做到大量内存分配。
  2. 局部数组:访问范围有限。
  3. 全局数组:存在乱序访问,需要添加互斥保护,降低运行效率。
3. Struct:
  1. 可以数组成员来实现大量内存访问,同样存在数组缺陷;
  2. 做到分配大量内存,并且分配内存与数据类型无关。
4. malloc 和 free: 1. malloc 函数
  1. 功能:动态(随时随地)分配连续内存,必须使用free函数释放;
  2. 形参:size:指定要分配的内存大小,单位是字节 ;
  3. 返回值:返回分配的内存的首地址,注意做到强制类型转换;
    如果分配失败,返回值NULL
#include   //为了分配malloc和free
void *malloc(unsigned long size)

分配举例:

void *p=malloc(8);
if(NULL==p){
    printf("分配内存失败");
    return -1;
}else{
    *(int *)(p+0)=2;
    *(int *)(p+4)=3;//将p强制转换为int指针类型,P为首地址,int* 代表内容占据 4 字节
    printf("%d %d",*(int *)(p+0),*(int *)(p+4));
}
2. free 函数
  1. 功能:释放内存;注意释放指针:p=NULL
  2. 形参:传递 malloc 分配的内存的首地址 p
#include 
  void free(void *p);
//调用此函数,即可随时释放malloc分配的内存,将内存资源归还给操作系统

注意:不要让指针乱指

free (p);  // p指向的内存释放了
p = NULL;  // 将指针置0,否则p成为野指针了
3. 举例使用:
#include 
typedef struct student{
    char *name[30];
    int age;
    int weight;
}stu_t;

stu_t *get_stu_inform(void)
{
    //动态内存分配,只要不调用free,内存一直存在
 	stu_t *stu1=(stu_t *)malloc(sizeof(stu_t));
  	if(NULL==stu1){
       printf("分配失败");   
       return NULL;
   }
   memset(stu1,0,sizeof(stu_t));//清零
   //指定信息
   strcpy(stu1->name,"yujinlong");
   stu1->age=18;
   stu1->weight=180;
   return stu1;      	   
}

int main(int argc,char *argv[])
{
    //获取学生信息,p为malloc分配内存头指针
    stu_t *p=get_stu_inform();
  	if(NULL==p){
       printf("分配失败");   
       return -1;
   } 
    printf("%s %d %d",p->name,p->age,p->id);
    free();//malloc内存清空
    stu1=NULL;//清空指针
    return 0;
}
总结:
  1. 本节总结常见内存分配,C备忘结束。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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