【备战春招】第8天 嵌入式工程师学习笔记
课程信息
- 课程名称:物联网/嵌入式工程师
- 章节名称:第3周之第三讲 1-5 C语言中的堆区内存管理
- 讲师姓名:大白老师
课程内容概述
1. 简介
本节介绍了C语言中的内存分配。
2. 内存分配图示说明
3. 堆区空间的分配
3.1 malloc函数
#include <stdlib.h>
void *malloc(unsigned int size)
功能:从堆区分配内存
参数:
@size 分配内存的字节数
返回值:
成功返回分配内存的首地址,失败返回NULL
3.2 free函数
#include <stdlib.h>
void free(void *ptr)
功能:释放内存
参数:
@ptr 分配内存的首地址
返回值:
无
3.3 memset函数
#include <string.h>
void *memset(void *s, int c, size_t n);
功能:把s所指向内存区域的前n个字节,全部置为c
参数:
@s 想要操作内存区域的首地址
@c 内存区域填充的值
@n 需要填充的字节数
返回值:
成功返回s所指向的地址,
失败返回NULL
3.4 代码示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
int *get_memory_addr()
{
int *addr = NULL;
addr = (int *)malloc(sizeof(int) * N);
if(NULL == addr)
{
printf("malloc is fail!\n");
return NULL;
}
memset(addr,0,sizeof(sizeof(int) * N));
return addr;
}
void input_array(int *p)
{
int i = 0;
printf("please input %d data : ",N);
for(i = 0;i < N;i++)
{
scanf("%d",&p[i]);
}
}
void ouput_array(int *p)
{
int i = 0;
for(i = 0;i < N;i++)
{
printf("%d ",p[i]);
}
printf("\n");
}
int main()
{
int *t = NULL;
t = get_memory_addr();
input_array(t);
ouput_array(t);
free(t);
t = NULL;
return 0;
}
运行结果
please input 5 data : 10 20 30 40 50
10 20 30 40 50
学习心得
C语言中的内存管理,使用时需要使用多少内存就分配多少内存,不要过多分配;使用完以后一定要free(),要不然可能会造成内存泄漏。
当一个程序在操作系统中运行结束后,它运行过程中分配的内存都会被释放掉。。
课程截图
1. 内存泄漏的示例
2. 查看程序的内存分配
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦