malloc calloc realloc
calloc
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int main(void)
{//指针,指向堆区空间,5个int类型//指向首元素,首元素是int, 需要int *int * p;int n = 5;p = (int *)malloc(n * sizeof(int)); //内存的值为随机数//memset(p, 0, sizeof(int)*n);p = (int *)calloc(n, sizeof(int)); //内存的值为0//p = (int *)calloc(sizeof(int), n);int i = 0;for (i = 0; i < n; ++i){printf("%d\n", p[i]);}//一夫一妻free(p); //不是释放p的内存,是释放p所指向的内存printf("\n");system("pause");return 0;
}
realloc
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
//指针,指向堆区空间,5个int类型, 指向首元素,首元素是int, 需要int *
int * p;
int n = 5;
p = (int *)malloc(n * sizeof(int)); //内存的值为随机数
int i = 0;
for (i = 0; i < n; ++i)
{
p[i] = i + 1;
}
//前面的代码,不能变, 给我增加5个int的空间
int * tmp = (int *)malloc(10 * sizeof(int)); //10个int的空间
memcpy(tmp, p, n * sizeof(int));
free(p);
p = tmp;
for (i = 0; i < n; ++i)
{
printf("%d\n", p[i]);
}
for (i = 5; i < 10; ++i)
{
p[i] = i + 1;
printf("%d\n", p[i]);
}
//一夫一妻
free(p); //不是释放p的内存,是释放p所指向的内存
printf("\n");
system("pause");
return 0;
}
自己实现realloc
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
//指针,指向堆区空间,5个int类型, 指向首元素,首元素是int, 需要int *
int * p;
p = realloc(NULL, 5 * sizeof(int)); //第一个参数为NULL说明为第一次分配内存, 等级于malloc
int i = 0;
for (i = 0; i < 5; ++i)
{
p[i] = i + 1;
printf("%d\n", p[i]);
}
printf("\n");
//增加5个内存
printf("before p = %p\n", p);
p = realloc(p, 1000 * sizeof(int));
printf("after p = %p\n", p);
for (i = 0; i < 5; ++i)
{
printf("%d\n", p[i]);
}
printf("\n");
for (i = 5; i < 10; ++i)
{
p[i] = i + 1;
printf("%d\n", p[i]);
}
printf("\n");
free(p);
printf("\n");
system("pause");
return 0;
}
malloc calloc realloc相关推荐
- malloc calloc realloc的对比
函数原型 三个函数的声明分别是: void* realloc(void* ptr, unsigned newsize); void* malloc(unsigned size); void* call ...
- 内存分布malloc/calloc/realloc/free/new/delete、内存泄露、String模板、浅拷贝与深拷贝以及模拟string类的实现
内存分布 一.C语言中的动态内存管理方式:malloc/calloc/realloc和free 1.malloc: 从堆上获得指定字节的内存空间,函数声明:void *malloc (int n); ...
- C语言动态申请内存空间之malloc(),calloc(),realloc()函数
在C语言中用于动态申请内存空间的函数主要为malloc()函数,calloc()函数,以及realloc()函数,以下主要介绍三个函数的用法,区别以及使用时的注意事项. malloc(),calloc ...
- c语言malloc,calloc,realloc函数介绍
malloc,calloc,realloc动态内存管理函数的出现解决了在某些c语言标准中不能使用变长数组的问题 这三个函数的使用需要头文件stdlib.h,这些函数开辟的空间在堆区,系统不会自动释放, ...
- malloc/calloc/realloc
malloc/calloc/realloc和free介绍: malloc函数 malloc函数可以从堆上获得指定字节的内存空间,其函数声明如下: void * malloc(int n); 参数释义: ...
- malloc calloc realloc 三兄弟!!!
学习过C语言的都知道 malloc calloc realloc 这三个函数,这三个函数都是用于动态的分配内存的,最后都要使用 free函数进行释放. 这三个函数的头文件 : stdlib.h 在li ...
- c语言释放内存函数,【C语言】内存分配函数malloc/ calloc/ realloc及内存释放free
前言: 内存区域划分与分配: 1.栈区(stack)--程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等,程序结束时由编译器自动释放. 2.堆区(heap) -- 在内存开辟另一块存储区域 ...
- malloc,calloc,realloc,free函数
在进行C/C++编程的时候,需要程序员对内存的了解比较清楚,经常需要操作的内存可分为下面几个类别: 1.堆栈区(stack):由编译器自动分配与释放,存放函数的参数值,局部变量,临时变量等等,它们获取 ...
- 浅谈malloc,calloc,realloc函数之间的区别
内存区域可以分为栈,堆,静态存储区和常量存储区.局部变量,函数形参,临时变量都是在栈上获得内存的,它们获取的方式都是由编译器自动执行的. C 标准函数库提供了许多函数来实现对堆上内存管理,其中包括:m ...
- malloc calloc realloc
(类型*)malloc(size) (类型*)calloc(n,size) (类型*)realloc(*ptr,size) (1) malloc 分配指定字节数的存储区.此存储区中的初始值不确定 (2 ...
最新文章
- 西藏监狱首次奏响《婚礼进行曲》
- 2021年春季学期-信号与系统-第二次作业参考答案-第九小题
- linux进程--自旋锁和互斥锁的区别(十五)
- python 多数据输出到txt_python-BeautifulSoup输出到.txt文件
- java教程pdf下载百度云,面试题+笔记+项目实战
- 一步步编写操作系统 23 重写主引导记录mbr
- JimuReport积木报表 — API数据源报表制作
- poj 1456 Supermarket 贪心+并查集(个人感觉有点难判断出来
- 笔记本电脑磁盘加密技术
- 简单实现根据excel表生成sql 建表语句
- 一个粗糙的js分页判断
- 学习笔记:修改网吧计费系统
- [历朝通俗演义-蔡东藩-前汉]第007回 寻生路徐市垦荒 从逆谋李斯矫诏
- as3读写本地xml/txt
- 解决mac登录APPLE ID无限重复弹窗提示登录
- 梦幻风图片?我用Python分分钟做出来!!
- 【程序员面试】校招和社招的区别
- 液晶显示器偏光膜的基本原理
- mybatis中resultMap和resultType区别,三分钟读懂
- 航拍茅山宝盛园透明屋“镶嵌”茶园犹如外星基地
热门文章
- 树状数组相关应用之平面范围求和问题
- TensorFlow2.0:张量排序
- Java虚拟机(JVM)-1-内存区域
- [转] 先验概率与后验概率贝叶斯与似然函数
- 找不到java虚拟机_javabridge.jutil.JVMNotFoundError:找不到Java虚拟机
- 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...
- wps 选择 高亮_简单实用:一组WPS表格技巧
- python的作用域 gbel_[ python ] 全局和局部作用域变量的引用
- android 火箭动画,利用动画模拟火箭发射场景
- java解三角函数方程_Java 中的三角函数