#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)*);
if(NULL != pm)
{
printf("使用malloc分配的存储空间\n");
for(i=; i<; i++)
{
printf("%d\t", *pm++);
if((i+)% == ) printf("\n");
} printf("\n"); free(pm);
pm = NULL;
}
int *pc;
pc = (int *)calloc(, sizeof(int));
printf("使用calloc分配的存储空间\n");
for (int i=; i<; i++)
{ if(NULL != pc)
{
printf("%d\t", *pc++ );
if((i+)% == ) printf("\n");
} }
printf("\n");
free(pc);
pc = NULL;
int *pms = (int *)malloc(sizeof(int)*);
if(NULL != pms)
{
memset(pms, , );
}
printf("使用memset分配的存储空间\n");
for (int i=; i<; i++)
{
if(NULL != pms)
{
printf("%d\t", *pms++ );
if((i+)% == ) printf("\n");
} }
printf("\n");
free(pms);
pms = NULL;
printf("使用realloc分配的存储空间\n");
int *pre = (int *)malloc(sizeof(int) * );
if (NULL != pre)
{
pre = (int *)realloc(pre,sizeof(int)*);
if (NULL != pre)
{
for (i=; i<; i++)
{
printf("%d\t", *pre++);
if((i+)% == ) printf("\n");
}
}
}
printf("\n");
free(pre);
pre = NULL; return ;
}
使用malloc分配的存储空间

                    -    -    -
- - - - - - - - 使用calloc分配的存储空间 使用memset分配的存储空间 使用realloc分配的存储空间 -

C语言之内存分配函数的更多相关文章

  1. C语言内存分配函数malloc——————【Badboy】

    C语言中经常使用的内存分配函数有malloc.calloc和realloc等三个,当中.最经常使用的肯定是malloc,这里简单说一下这三者的差别和联系. 1.声明 这三个函数都在stdlib.h库文 ...

  2. C语言中内存分配那些事儿

    C程序的内存结构 C语言的之所以复杂,首先它的内存模型功不可没.不像某些那样的高级语言只需要在使用对象的时候,用new创建.所有之后的事情,你不需要操心.对于C语言,所有与内存相关的东西,都需要熟悉, ...

  3. C内存分配函数

    C语言跟内存分配方式(1) 从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量.(2) 在栈上创建.在执行函数时,函数内局部变量的 ...

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

    转自:http://www.cnblogs.com/particle/archive/2012/09/01/2667034.html#commentform malloc: 原型:extern voi ...

  5. C语言中内存分配 (转)

    在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要介绍内存管理基本概念,重 ...

  6. Win内存分配函数(GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc)

    Win内存分配函数(GlobalAlloc/HeapAlloc/LocalAlloc/VirtualAlloc) 来源:http://blog.csdn.net/chunyexiyu/article/ ...

  7. 【转】C语言中内存分配

    原文:C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要 ...

  8. C语言中内存分配

     C语言中内存分配   在任何程序设计环境及语言中,内存管理都十分重要.在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的.因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题. 第1节主要 ...

  9. C标准库-数值字符串转换与内存分配函数

    原文链接:http://www.orlion.ga/977/ 一.数值字符串转换函数 #include <stdlib.h> int atoi(const char *nptr); dou ...

随机推荐

  1. docker内的应用访问宿主机上的mysql和Redis

    背景:宿主机部署MySQL.Redis,docker内部署tomcat.jdk 需求:tomcat内的应用访问宿主机的MySQL和Redis 方法:     一.连接地址切记不能用localhost和 ...

  2. Joda-Time 入门

    Joda-Time 令时间和日期值变得易于管理.操作和理解.事实上,易于使用是 Joda 的主要设计目标.其他目标包括可扩展性.完整的特性集以及对多种日历系统的支持.并且 Joda 与 JDK 是百分 ...

  3. scss定义全局变量引入sass-resources-loader报错

    开发jquery多页应用,引入sass-resources-loader后报 Make sure 'options.resources' is String or Array of Strings. ...

  4. opensns的URL模式

    URL模式 如果我们直接访问入口文件的话,由于URL中没有模块.控制器和操作,因此系统会访问默认模块(Home)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的: htt ...

  5. 前端用vue,后端需要nodejs吗?

    其实用脚趾头想想也知道:后端用不用node,和前端用不用vue,二者完全没关系. 那为何用vue和vue插件开发前端的时候,经常需要各种npm install呢?为何要在本地安装node环境? 本地需 ...

  6. java笔试手写算法面试题大全含答案

    1.统计一篇英文文章单词个数.public class WordCounting {public static void main(String[] args) {try(FileReader fr ...

  7. codeforces round 433 C. Planning 贪心

    题目大意: 输入n,k,代表n列航班,初始始发实践为1,2,3分钟以此类推,然后输入n个整数分别代表延迟1分钟第i个航班损失多少钱,然后调整后的始发时间表是这样的,任何一辆航班的始发时间不能在他的初始 ...

  8. spark算子之Aggregate

    Aggregate函数 一.源码定义 /** * Aggregate the elements of each partition, and then the results for all the ...

  9. IT类影视

    1.爱奇艺 代码(The Code) 2.爱奇艺 操作系统革命(Revolution OS) 3.爱奇艺 互联网之子 4.爱奇艺 深网

  10. java 获取String出现最多次数的字段

    package hello; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator ...