当前位置: 首页 > news >正文

C语言学习及复习笔记-【18】C内存管理

18 C内存管理

C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。

序号函数和描述
1void *calloc(int num, int size); 在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size 个字节长度的内存空间,并且每个字节的值都是0。
2void free(void *address); 该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。
3void *malloc(int num); 在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
4void *realloc(void *address, int newsize); 该函数重新分配内存,把内存扩展到 newsize

**注意:**void * 类型表示未确定类型的指针。C、C++ 规定 void * 类型可以通过类型转换强制转换为任何其它类型的指针。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char name[100];char *description;strcpy(name, "Zara Ali");/* 动态分配内存 */description = (char *)malloc( 30 * sizeof(char) );//calloc(30, sizeof(char));if( description == NULL ){fprintf(stderr, "Error - unable to allocate required memory\n");}else{strcpy( description, "Zara ali a DPS student.");}/* 假设您想要存储更大的描述信息 */description = (char *) realloc( description, 100 * sizeof(char) );if( description == NULL ){fprintf(stderr, "Error - unable to allocate required memory\n");}else{strcat( description, "She is in class 10th");}printf("Name = %s\n", name );printf("Description: %s\n", description );/* 使用 free() 函数释放内存 */free(description);
}

当上面的代码被编译和执行时,它会产生下列结果:

Name = Zara Ali
Description: Zara ali a DPS student.She is in class 10th
http://www.lryc.cn/news/24767.html

相关文章:

  • linux--多线程(一)
  • 计算机组成原理(2.1)--系统总线
  • C语言数组【详解】
  • 并行与体系结构会议
  • 【巨人的肩膀】JAVA面试总结(三)
  • 嵌入式 STM32 SHT31温湿度传感器
  • 哪款蓝牙耳机打电话好用?打电话音质好的蓝牙耳机
  • 【C++】-- 内存泄漏
  • C++ STL学习之【string类的模拟实现】
  • Selenium基于POM的自动化测试实践
  • 记录每日LeetCode 2373.矩阵中的局部最大值 Java实现
  • QT中级(6)基于QT的文件传输工具(2)
  • 【Linux】工具(3)——gcc/g++
  • Android文件选择器
  • 《MySql学习》 Select 查询语句慢的非性能原因
  • Vue组件间通信方式超详细(父传子、父传后代、子传父、后代传父、兄弟组件传值)
  • 【ES】Elasticsearch-深入理解索引原理
  • pdf压缩文件大小的方法是什么?word文件怎么批量转换成pdf格式?
  • 论文阅读——FECANet:应用特征增强的上下文感知小样本语义分割网络
  • 数组模拟常见数据结构
  • ADC0832的AD模数转换原理及编程
  • 【工具插件类教学】UnityPackageManager私人定制资源工具包
  • 【软件测试】2023年了还不会接口测试?老鸟总结接口测试面试谁还敢说我不会......
  • 类Vuex轻量级状态管理实现
  • Java 基本数据类型
  • 全网资料最全Java数据结构与算法-----算法分析
  • 【封装xib补充 Objective-C语言】
  • linux + jenkins + svn + maven + node 搭建及部署springboot多模块前后端服务
  • VBA之正则表达式(41)-- 快速标记两个星号之后的字符
  • VMware16安装MacOS【详细教程】