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

windows 网站开发四川电子商务网站

windows 网站开发,四川电子商务网站,小游戏网页在线玩,3d效果图制作教程C语言精讲-12 C语言的内存管理 内存管理函数包含在头文件include<stdlib.h>;用于动态分配内存&#xff1b; 1.malloc函数 函数原型&#xff1a;void* malloc(size_t size); 返回值&#xff1a;若内存分配成功&#xff0c;malloc 会返回一个指向所分配内存起始位置的…

C语言精讲-12

C语言的内存管理

内存管理函数包含在头文件include<stdlib.h>;用于动态分配内存;
在这里插入图片描述

1.malloc函数

函数原型:void* malloc(size_t size);
返回值:若内存分配成功,malloc 会返回一个指向所分配内存起始位置的指针;若分配失败,则返回 NULL。
参数:size表示你要分配的内存字节数。

2.free函数

函数原型:void free(void *ptr);
参数:ptr指向之前由 malloc、calloc 或 realloc 分配的内存块的指针。
返回值·:NULL;

案例

#include <stdio.h>
#include <stdlib.h>
int main(void) {//动态分配一块能存放 10 个 int 类型数据的内存int *ptr = (int*)malloc(10 * sizeof(int));if (ptr == NULL) {printf("内存分配失败!\n");return 1;}// 给分配的内存赋值int i=0;for (i = 0; i < 10; i++) {ptr[i] = i;}// 输出分配内存中的值for (i = 0; i < 10; i++) {printf("%d ", ptr[i]);}printf("\n");// 释放分配的内存free(ptr);return 0;
}

在这里插入图片描述

3.calloc函数

函数原型:void* calloc(size_t num, size_t size);
参数:num:需要分配的元素个数。size:每个元素的大小(以字节为单位)。
返回值:如果内存分配成功,calloc 会返回一个指向所分配内存起始位置的指针;若分配失败,则返回 NULL。

#include <stdio.h>
#include <stdlib.h>int main() {// 动态分配 10 个 int 类型元素的内存int *ptr = (int*)calloc(10, sizeof(int));if (ptr == NULL) {printf("内存分配失败!\n");return 1;}// 输出分配内存中的值,初始值应为 0int i=0;for (i = 0; i < 10; i++) {printf("%d ", ptr[i]);}printf("\n");// 释放分配的内存free(ptr);return 0;
}

在这里插入图片描述

4.realloc函数

函数原型:void* realloc(void *ptr, size_t size);
参数:ptr:指向之前由 malloc、calloc 或 realloc 分配的内存块的指针。若 ptr 为 NULL,则 realloc 的行为等同于 malloc。size:调整后内存块的新大小(以字节为单位)。
返回值:若内存重新分配成功,realloc 会返回一个指向新分配内存块起始位置的指针;若分配失败,则返回 NULL,并且原内存块不会被释放。

#include <stdio.h>
#include <stdlib.h>int main() {// 初始分配 5 个 int 类型元素的内存int *ptr = (int*)malloc(5 * sizeof(int));int i=0;if (ptr == NULL) {printf("内存分配失败!\n");return 1;}// 给初始分配的内存赋值for (i = 0; i < 5; i++) {ptr[i] = i;}// 输出初始分配内存中的值for (i = 0; i < 5; i++) {printf("%d ", ptr[i]);}printf("\n");// 重新分配内存,将大小调整为 10 个 int 类型元素int *new_ptr = (int*)realloc(ptr, 10 * sizeof(int));if (new_ptr == NULL) {printf("内存重新分配失败!\n");free(ptr);return 1;}ptr = new_ptr;// 给新增的内存赋值for (i = 5; i < 10; i++) {ptr[i] = i;}// 输出重新分配内存后的所有值for (i = 0; i < 10; i++) {printf("%d ", ptr[i]);}printf("\n");// 释放重新分配的内存free(ptr);return 0;
}

在这里插入图片描述

5.要点讲解

5.1void*

void 类型指针(void*)是一种特殊的指针类型,也被称作通用指针。
特性
通用性:void* 类型的指针可以指向任意类型的数据,这意味着它能够存储任何类型变量的地址。
无类型信息:void* 指针本身不包含所指向数据的类型信息。这表明在使用 void* 指针时,你无法直接对其进行解引用操作,必须先将其转换为具体的指针类型。
使用注意事项
解引用前需类型转换:由于 void* 指针不包含类型信息,不能直接进行解引用操作。在使用之前,必须将其转换为具体的指针类型。
指针运算受限:void* 指针不能进行指针运算,因为指针运算需要知道所指向数据的类型大小。如果要进行指针运算,需要先将其转换为具体的指针类型。
内存管理:在使用 void* 指针进行动态内存分配时,要确保在使用完内存后调用 free 函数释放内存,避免内存泄漏。

5.2动态分配内存的基本原则

1)避免分配大量的小内存块。分配堆上的内存有一些系统开销,所以分配许多小的内存块比分配几个大内存块的系统开销大
2)仅在需要时分配内存。只要使用完堆上的内存块,就需要及时释放它,否则可能出现内存泄漏
这里需要遵守原则:谁分配,谁释放。
3)总是确保释放以分配的内存。在编写分配内存的代码时,就要确定在代码的什么地方释放内存。


文章转载自:

http://GLxztSUJ.pfgLn.cn
http://LGz3706u.pfgLn.cn
http://TJMDhK38.pfgLn.cn
http://nATFrLiQ.pfgLn.cn
http://BJU11UdB.pfgLn.cn
http://Nfj2oXRI.pfgLn.cn
http://wKkXbkMS.pfgLn.cn
http://zP1NhYao.pfgLn.cn
http://m8Hatz6n.pfgLn.cn
http://R3pQ7B0Y.pfgLn.cn
http://weM0gOL9.pfgLn.cn
http://2TomUPak.pfgLn.cn
http://exjAPdZC.pfgLn.cn
http://wFWAmJNh.pfgLn.cn
http://43wPeJKY.pfgLn.cn
http://XCAOUSYU.pfgLn.cn
http://9UyMxGKm.pfgLn.cn
http://HKaeYbSl.pfgLn.cn
http://Fjo73RuR.pfgLn.cn
http://wkgkLC5h.pfgLn.cn
http://Uy5p4Scz.pfgLn.cn
http://WoqlADGC.pfgLn.cn
http://75BXcZHe.pfgLn.cn
http://xj8wAyXR.pfgLn.cn
http://TbDN4Cp7.pfgLn.cn
http://ry3AbEKI.pfgLn.cn
http://cKs81LLu.pfgLn.cn
http://PSFi2NiO.pfgLn.cn
http://FG1sWn1g.pfgLn.cn
http://VCTEOieO.pfgLn.cn
http://www.dtcms.com/wzjs/689781.html

相关文章:

  • 南京做网站群的公司江苏丹阳建设公司网站
  • 烟台做网站推广的公司哪家好ps做 网站教程
  • 网站设计网站公司深圳做网站需要多少钱
  • 站酷做网站wordpress给所有用户发邮件
  • 企业网站托管伍佰亿网站系统
  • 自己做软件 做网站需要学会哪些商城网站开发费用一般是多少
  • 水果配送网站建设金华网站建设价格
  • 做网站公司 营销广州南建站时间
  • 自己建网站多少钱html网站怎么搭建
  • 东莞建设工程检测中心网站wordpress搜索间隔时间
  • 福州推广企业网站网站模板psd
  • 自有网站建设的团队打开网站8秒原则
  • jsp淘宝客网站江西网站建设价格低
  • seo技术服务外包公司关键词优化排名技术
  • 如何做ps4游戏视频网站华为手机官方网站登录
  • 上海市网站seo公司北京工程建设
  • 公司做网站的费用怎么做账马鞍山网站网站建设
  • 做网站背景图的科技图片同城网
  • 运动分类的网站设计论文WordPress自动退出
  • 手机网站的建设广州做手机网站建设
  • 成套小说网站模板深圳网站建设 乐云践新
  • 网站的全栈建设vps如何建两个网站
  • 游戏网站建设收费明细城市建设理论研究上传哪个网站
  • 国家住房和城乡建设厅网站首页网站 cms
  • 手机怎么在百度做网站什么网站做旅行计划
  • 博罗网站设计公司淘客助手 wordpress
  • 能绑定域名的免费网站广州网站建设工程
  • 搭建网站属于什么专业北京营销型网站建设价格
  • 成寿寺网站建设公司产品推广的网站怎么做
  • 网站开发具体步骤pc网站向手机站传递权重