API

stdlib.h 头文件中,有如下API:

其中:

  • 分配内存: void* calloc(单元数, 单个单元占用字节数) 申请内存的字节数 = 单元数 * 单个单元占用字节数
  • 释放内存: void free(void*)

malloc 方法参数没有 calloc 方便。
而 realloc 用于重新申请内存(扩容)。

Code

注意 p[i]*(p + i) 两种写法(寻址方式)都可以指示对应元素。

//
//  main.c
//  alloc-内存分配
//
//  Created by wuyujin1997 on 2023/2/20.
//#include <stdio.h>
#include <stdlib.h>int main(int argc, const char * argv[]) {int COUNT = 5;
//    int* p = (int*) malloc(COUNT * sizeof(int));int * p = (int*) calloc(COUNT, sizeof(int));// 遍历+赋值。两种赋值方式: p[i] 和 *(p + i)for (int i = 0; i < COUNT; i++) {p[i] = 11 * i;// *(p + i) = 11 * i;    // 与上一行赋值方式(寻址方式)等效}// 遍历+打印。两种取值方式: p[i] 和 *(p + i)for (int i = 0; i < COUNT; i++) {printf("元素内存地址:%p  下标:%d  值:%d  %d\n", p+i, i, p[i], *(p + i));}free(p);for (int i = 0; i < COUNT; i++) {printf("元素内存地址:%p  下标:%d  值:%d %d\n", p+i, i, p[i], *(p + i));}return 0;
}

Output:

元素内存地址:0x600000203360  下标:0  值:0  0
元素内存地址:0x600000203364  下标:1  值:11  11
元素内存地址:0x600000203368  下标:2  值:22  22
元素内存地址:0x60000020336c  下标:3  值:33  33
元素内存地址:0x600000203370  下标:4  值:44  44
元素内存地址:0x600000203360  下标:0  值:-561171616 -561171616
元素内存地址:0x600000203364  下标:1  值:48813 48813
元素内存地址:0x600000203368  下标:2  值:2043 2043
元素内存地址:0x60000020336c  下标:3  值:0 0
元素内存地址:0x600000203370  下标:4  值:0 0
Program ended with exit code: 0

参考

Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc()

C 内存分配 内存释放 calloc free 方法的使用相关推荐

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

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

  2. C/C++动态二维数组的内存分配和释放

    C语言: 1 //二维数组动态数组分配和释放 2 //数组指针的内存分配和释放 3 //方法一 4 char (*a)[N];//指向数组的指针 5 a = (char (*)[N])malloc(s ...

  3. C++/C--动态二维数组的内存分配与释放【转载】

    1 C语言_二维数组动态数组分配和释放 1.1 数组指针的内存分配和释放 //方法一 char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(cha ...

  4. C语言中多维数组的内存分配和释放(malloc与free)(转)

    C语言中多维数组的内存分配和释放(malloc与free)(转) 写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误.下面贴上一些示例代码,以供参考. 如果要给二维数组( ...

  5. v11.03 鸿蒙内核源码分析(内存分配) | 内存有哪些分配方式 | 百篇博客分析HarmonyOS源码

    子曰:"君子周而不比,小人比而不周."<论语>:为政篇 百篇博客系列篇.本篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪些分配方式 内存管理相关篇为 ...

  6. C和指针之动态内存分配malloc、calloc、realloc简单使用和区别

    1.介绍 3个函数都在<stdlib.h>头文件 1).void* malloc(unsigned size); 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需 ...

  7. malloc 初始化_关于内存分配malloc、calloc、realloc的区别

    (1) malloc() 在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址 (2) calloc() 与malloc相似,参数sizeOf ...

  8. c语言内存分配与释放 不同类别变量的内存分配和释放的区别

    1.不同变量使用内存的区别 静态存储类别的变量:内存数量在编译时确定,程序开始执行时创建,程序结束时销毁.(static.const) 自动存储类别的变量:程序进入变量定义所在块时存在,离开块时销毁. ...

  9. CUDA内存分配、释放、传输,固定内存

    /** 内存分配* if failed, return cudaErrorMemoryAllocation */cudaError_t cudaMalloc(void **devPtr, size_t ...

最新文章

  1. Linux获取系统当前时间(精确到毫秒)
  2. python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
  3. 有没有办法检查`null`和`undefined`?
  4. objdump and readelf
  5. 九齐51单片机使用注意事项:不要用float
  6. Leetcode--78. 子集
  7. java线程集合点_Jmeter集合点(线程组和同步定时器)
  8. 最新dotCMS SQL注入漏洞 攻击者可获得敏感数据 绿盟科技发布安全威胁通告
  9. 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
  10. hive大字段拼接与切割实战(一个大字段保存每天历史数据)
  11. 富勒wms系统里的定时器id_仓储、运输配送供应链管理系统解决方案以及应用领域区别...
  12. 200以后最小质数:
  13. 移动Ad Hoc网络路由协议汇总
  14. 身份证号码中间位数隐藏
  15. “微笑妹妹”9岁撑起一个家
  16. uni-table单元格中预览图片:阻止冒泡
  17. 让研发团队找准市场需求
  18. 云服务器系统镜像选什么,云服务器系统镜像选什么用
  19. 微信美化版qu水印小程序源码分享 附接口
  20. matlab复数矩阵 画图,包含矩阵、复数的函数画图问题,请赐教

热门文章

  1. 漫画女生的眼睛怎么画?日系动漫眼睛画法
  2. DSM、DEM、H互相计算
  3. RTP协议转发视频流
  4. Dynamo 删除元素
  5. VR风暴将至虚拟现实的中国故事该怎么写?
  6. phpbb风格模板_phpBB-phpBB官网:免费开源论坛程序源码-禾坡网
  7. 刚写的QQ对对碰外挂
  8. Android系统设置开机音乐、开机动画
  9. 国际软件巨头“垂青”中国首个专业软件外包园
  10. 学术英文 | (7) Unit3Words