查看: 434|回复: 2

[C/C++] C/C++对内存的动态管理

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7757
人气
176
分享
52

最佳新人活跃会员

发表于 2022-12-29 18:39:51 | 显示全部楼层 |阅读模式
【前言】

我又来更新了!
今天讲的是内存管理
一切前提:#include<stdlib.h>或者#include<cstdlib>
【malloc函数】
函数原型:
[C] 纯文本查看 复制代码
void *malloc(unsigned int size);

作用:在内存中分配一块大小为size(字节数)的内存空间
返回值:指向的内存(错误为NULL)

这通常要使用sizeof()关键字,这里讲解一下
sizeof()关键字的使用方法如下:
[C] 纯文本查看 复制代码
sizeof(114514); //常量114514占4字节
sizeof(int); //int类型占4字节
sizeof(long); //long类型占8字节

使用示例:
[C] 纯文本查看 复制代码
int *pHomo; //(bushi
pHomo = (int *)malloc(sizeof(int));
*pHomo = 114514;
printf("pHomo = %d",*pHomo);
//这个程序有个大问题,一会儿会讲


【calloc函数】
函数原型:
[C] 纯文本查看 复制代码
void *calloc(unsigned n,unsigned size);

作用:在内存中连续分配n个大小为size的内存空间
返回值:指向的一串内存(错误为NULL)
使用示例:
[C] 纯文本查看 复制代码
int *pHomoArr;
pHomoArr = (int *)calloc(114,sizeof(int));
//同样,这个程序也有问题

【realloc函数】
函数原型:
[C] 纯文本查看 复制代码
void *realloc(void *ptr,size_t size);

返回值:指向的内存(错误为NULL)
作用:将ptr处的内存大小改为size大小
使用示例:
[C] 纯文本查看 复制代码
int *pIntHomo;
long *pLong;

pIntHomo = (int *)malloc(sizeof(int));
pLong = realloc(pIntHomo,sizeof(long));
//还是有问题。。。

【free函数】
前面的程序都有问题!
为哈呢?
因为,所有内存都以堆的形式储存
使用完后,没有及时释放
所以,需要free函数
函数原型:
[C] 纯文本查看 复制代码
void free(void *ptr);

作用:释放ptr处的内存

这玩意有啥用?
小程序可以不用,但是在实际开发中
如果连续分配114514次1MB的内存,及时释放,仅需1mb内存
如果不释放,需要114514MB的内存!
学会了吗?


评分

参与人数 1经验 +11 人气 +3 收起 理由
YFSafe + 11 + 3

查看全部评分

本帖被以下淘专辑推荐:

小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5370
人气
208
分享
36

最佳新人活跃会员

发表于 2022-12-31 15:12:34 | 显示全部楼层
高质量文章!
另外,恭喜成为实习版主
YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7757
人气
176
分享
52

最佳新人活跃会员

 楼主| 发表于 2022-12-31 19:05:18 | 显示全部楼层
YFSafe 发表于 2022-12-31 15:12
高质量文章!
另外,恭喜成为实习版主

同喜同喜,感谢支持
小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表