动态内存函数
来源:互联网 发布:麦壳少儿编程 编辑:程序博客网 时间:2024/05/22 22:18
动态内存函数
1. malloc和free
Malloc:向内存申请一块连续可用的空间。
Void*malloc(size_t size)//如果参数size为0,则函数的标准未定义
Free:释放所申请的动态内存空间。
#include "stdio.h"
#include "windows.h"
int main()
{
int num = 0;
scanf_s("%d", &num);
int arr[] = { 0 };
int *ptr = NULL;
ptr = (int *)malloc(num*sizeof(int));//开辟一段空间,如果开辟成功,则指向
那段空间;
if (NULL != ptr)
{
int i = 0;
for (i = 0; i < num; i++)
{
*(ptr + i) = 0;
}
}
printf("%p\n", ptr);
free(ptr);//释放ptr所指向的动态内存,空间已经归还计算机
printf("%p\n", ptr);
ptr = NULL;//ptr指向的内存已经无效,即相当于开辟空间失败,则,返回NULL指针,所以malloc返回值一定要检查
system("pause");
return 0;
}
由运行结果可以看出,释放前和释放后,ptr所指向的地址相同,只是释放后变得无效。
2. calloc函数
Void *calloc(size_t num,size_t size)
为num 个大小为size的元素开辟一段空间,将size个字节初始化为0.
#include "stdio.h"
#include "windows.h"
int main()
{
int *ptr = (int *)calloc(10,sizeof(int));//开辟一段空间
if (NULL != ptr)
{
}
printf("%p\n", ptr);
free(ptr);//释放ptr所指向的动态内存,空间已经归还计算机
printf("%p\n", ptr);
ptr = NULL;//ptr指向的内存已经无效
system("pause");
return 0;
}
Calloc和malloc函数的作用基本相同,但是在返回地址之前会将申请到的空间里的每个字节初始化为0。
3. Realloc函数
Realloc: 对动态开辟内存大小可以调整
Void *realloc (void *ptr ,size_t size)
include "stdio.h"
#include "windows.h"
int main()
{
int *ptr = malloc(100);//开辟一段空间
if (NULL != ptr)
{
}
else
{
exit(EXIT_FAILURE);
}
int *p = NULL;
ptr = realloc(ptr, 1000);//将要申请的内存空间扩展1000;但是可能会出现内存泄漏
if (NULL != ptr)
{
p = ptr;
}
free(p);//释放ptr所指向的动态内存,空间已经归还计算机
system("pause");
return 0;
- 动态内存分配函数
- 函数动态申请内存
- 动态内存函数
- 动态内存函数
- C++动态内存分配函数
- 函数与动态申请内存
- 函数不能传递动态内存
- 动态内存分配函数与释放函数
- openCV动态内存存储及操作函数
- openCV动态内存存储及操作函数
- C语言动态内存分配函数解析
- 跨函数使用内存,动态实现
- C语言动态内存分配函数解析
- C++函数间动态内存的传递
- C语言中的动态内存分配函数
- C语言动态内存分配函数解析
- CvMemStorage动态内存存储及操作函数
- 动态内存存储及操作函数
- struts2对于bigdecimal类型不支持默认转换的解决办法
- 实验三 NFA确定化和DFA最小化
- 交大OJ 1272 写数游戏/背包问题
- 11.正则表达式
- Google C++ Style Guide中英对照(三)
- 动态内存函数
- 显示高德地图
- [C]选择排序
- 自定义View之入门(一)
- C语言 有关数组查找
- [BZOJ2599][IOI2011]Race-树上启发式合并(dsu on tree)
- 机器学习基础决策树分类
- java统计字符串中数字、大小写字母、空格个数
- 使用vue-cli创建vue项目问题纪录