#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{/**************************************************************  C语言之动态内存分配函数malloc,calloc,realloc,memset**  malloc: void *malloc(size_t  size)*          包含在库函数stdlib.h中,作用是在内存的堆区分配一个大小为size*          的连续空间,如果分配内存成功,函数返回新分配内存的首地址,否则,*          返回NULL,一般在写程序需要判断分配内存是否成功,使用完内存后要及*          时释放内存。*  calloc:void *calloc(size_t  num,size_t  size)*          作用是在内存中分配连续大小为num*size的空间,这一点在动态数组内存*          分配有所体现,如果分配内存成功,函数返回新分配内存的首地址,否则,*          返回NULL。*      malloc与calloc区别:*          1、calloc在返回指向内存的指针之前把它初始化为0。*          2、请求内存数量的方式不同。malloc的参数仅仅是需要分配的*            内存字节数;calloc的参数包括元素的数量和每个元素的字节数。*   memset:void* memset (void*p, int c, size_t n);*         作用:将指针p指向的n个字节的内存全部赋值为c。可以对malloc分配的*         内存进行初始化**   realloc  void* realloc (void* ptr, size_t size)*         改变ptr所指内存区域的大小为size长度,如果重新分配成功则返回指向*         被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用*         free()函数将内存块释放。有一点需要注意:当分配内存成功之后,应*         将原本的指针ptr=NULL,否则会形成野指针,可能造成系统崩溃。** 提示:不论是以上那种方式申请内存,在申请内存之后,最终都要用free释放空间,*     不然会造成内存泄漏。但是内存只能释放一次,不能多次调用free函数。*************************************************************/int *pm, i;pm = (int*)malloc(sizeof(int)*100);if(NULL != pm){printf("使用malloc分配的存储空间\n");for(i=0; i<100; i++){printf("%d\t", *pm++);if((i+1)%10 == 0) printf("\n");}printf("\n");free(pm);pm = NULL;}int *pc;pc = (int *)calloc(100, sizeof(int));printf("使用calloc分配的存储空间\n");for (int i=0; i<100; i++){if(NULL != pc){printf("%d\t", *pc++ );if((i+1)%10 == 0) printf("\n");}}printf("\n");free(pc);pc = NULL;int *pms = (int *)malloc(sizeof(int)*100);if(NULL != pms){memset(pms, 0, 100 );}printf("使用memset分配的存储空间\n");for (int i=0; i<100; i++){if(NULL != pms){printf("%d\t", *pms++ );if((i+1)%10 == 0) printf("\n");}}printf("\n");free(pms);pms = NULL;printf("使用realloc分配的存储空间\n");int *pre = (int *)malloc(sizeof(int) * 50);if (NULL != pre){pre = (int *)realloc(pre,sizeof(int)*100);if (NULL != pre){for (i=0; i<100; i++){printf("%d\t", *pre++);if((i+1)%10 == 0) printf("\n");}}}printf("\n");free(pre);pre = NULL;return 0;
}

使用malloc分配的存储空间
4138720    4133928    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    3027544    8    1465662020    1870093388
1886612338    1550148449    1869440356    1650803804    710698869    -2147450880    -2147450880    -2147450880    1543503964    11955
4138720    4133952    -2147450880    -2147450880    -2147450880    -2147450880    -2147450880    -2147450880    -2147450880    -2147450880    使用calloc分配的存储空间
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0    使用memset分配的存储空间
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0    使用realloc分配的存储空间
4133528    4133824    4133880    538976288    402653208    11933    4132712    4128964    538976288    538976288
538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288
538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288    538976288
538976288    538976288    538976288    -14671840    1684957440    1601402735    134217736    11964    4139504    4128964
1113340483    1765954646    1700027502    1551070323    1953721961    1886153825    1634427745    1666999655    1869375859    1818846823
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0
0    0    0    0    0    0    0    0    0    0    

转载于:https://www.cnblogs.com/heml/p/3532326.html

C语言之内存分配函数相关推荐

  1. c语言释放内存函数,【C语言】内存分配函数malloc/ calloc/ realloc及内存释放free

    前言: 内存区域划分与分配: 1.栈区(stack)--程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等,程序结束时由编译器自动释放. 2.堆区(heap) -- 在内存开辟另一块存储区域 ...

  2. C语言动态内存分配函数

    目录 1.malloc() 2.free() 3.calloc() 4.realloc() 5.小结 在C中我们开辟内存空间有两种方式 : 1.静态开辟内存 : 例如: int a; int b[10 ...

  3. c语言字符指针分配内存,内存分配函数及使用注意事项,C语言内存分配函数完全攻略...

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1)malloc 函数原型如下: void * ma ...

  4. C语言动态内存管理和动态内存分配函数

    给变量分配内存空间可分为静态内存分配和动态内存分配. 静态内存分配属于编译时给变量分配的空间,动态分配属于在程序运行时给变量分配的空间 静态分配属于栈分配,动态分配属于堆分配 运行效率上,静态内存比动 ...

  5. C语言的内存分配模型

    C语言的内存分配模型 2008-03-12 19:32 C语言中的内存地址分配模型如下: 说明: 1.程序代码区:存放函数体的二进制代码. 2.全局区数据区:全局数据区划分为三个区域.全局变量和静态变 ...

  6. 【C/C++】内存分配函数:malloc,calloc,realloc,_alloca

    [C/C++]内存分配函数:malloc,calloc,realloc,_alloca malloc: 原型:extern void *malloc(unsigned int num_bytes); ...

  7. 内存分配函数 malloc、realloc、calloc

    C 语言主要提供 malloc.realloc.calloc.alloca 与 aligned_alloc 等内存分配函数来实现对内存的分配功能. 1) malloc 函数原型如下: void * m ...

  8. java 线程 内存分配内存_漫谈JAVA语言的内存分配

    在说JAVA语言的内存分配之前,我们先聊聊OS的Memory Management,这是学习操作系统课程的一个重要内容.从这里开始理解内存分配有利于理解的更深入. 我们知道物理内存是由page 和se ...

  9. 替换libc中的内存分配函数

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 本文介绍如何替换glibc中的内存分配函数为自定义的内存分配函数的方法,可以方便调试内存分配,和查找内存管理错误而产生 ...

  10. 内存分配函数 ExAllocatePool ExAllocatePoolWithTag

    如同C里面的malloc一样,内核模式下的ExAllocatePool也是非常重要的.但是一说到ExAllocatePool函数就不得不提ExAllocatePoolWithTag函数.对比一下两个函 ...

最新文章

  1. golang post get 请求 简介
  2. 树莓派:外设开发编程,控制继电器
  3. 如何在一个Eclipse同时启动两个Tomcat
  4. 九种破解Xp登录密码方法
  5. 1977标准_超过8分,就是痛风!附痛风诊断新标准和治疗原则
  6. 常用数据结构及复杂度
  7. Win8离线安装.net framework组件
  8. 理解 Delphi 的类(七) - 认识类的多态
  9. python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差
  10. 客户忠诚度及会员等级划分
  11. 突发!ARM中国区执行董事长兼CEO被免职
  12. duet连win10_duetdisplay这个软件在win10上用不了?安装vs2015的时候想取消安装没有点取消...
  13. C语言统计素数并求和
  14. 什么索引?索引的作用是什么?索引运用实例
  15. 如何在桌面上显示我的计算机,Win10如何将我的电脑(此电脑)显示到桌面上?
  16. 优锘:发布一站式数字孪生平台森工厂,打造数字孪生领域的office
  17. c编程语言外文翻译及原文,外文翻译--基于ST语言(结构化文本语言)可编程控制器(中文)...
  18. 计算天数(函数)(C语言实现)
  19. 求顺序表的交集和并集
  20. 狂神说Linux03:Vim使用及账号用户管理

热门文章

  1. 操作系统在内存中的位置
  2. 满二叉树与完全二叉树入门
  3. mysql 或hive left join不加关联条件
  4. CMAKE出现: undefined reference to
  5. HTML+CSS 模仿Windows 7 桌面效果
  6. 冬季打针后忌用手按摩
  7. 倾囊传授DELL主板BIOS设置
  8. 结构体的空间分配和位定义
  9. [4.6校内训练赛]
  10. insertBefore方法(javascript与jQuery)