栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言进阶(一)动态分配内存

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言进阶(一)动态分配内存

头文件:stdlib.h  string.h

一.申请动态分配内存malloc

stdlib.h中定义函数void* malloc(size_t size),向系统申请大小为size的内存空间。返回结果是void*,使用时转换成需要的指针类型。如果申请失败,返回NULL。

void 指针是一种特殊的指针,表示为“无类型指针”,任何类型的指针都可以直接赋值给 void 指针,而无需进行其他相关的强制类型转换,虽然如此,但这并不意味着可以无需任何强制类型转换就将 void 指针直接赋给其他类型的指针,要进行强制类型转换。

二.释放动态分配内存free()

#include
#include
int main(){
	int n;
	scanf("%d",&n);
	
	//int arr[n];
	//malloc写法输入数组 
	int* arr = malloc(sizeof(int)*n);
	for(int i=0;i 

三.初始化动态分配内存calloc

在Linux中malloc和calloc都会分配

int* arr = (int*)calloc(n,sizeof(int));
free(arr);

近似于

int arr[n] = {0};

四.重新调整内存大小realloc

void* realloc (void* ptr, size_t size);
  • 如果当前内存段后面有足够的内存空间,那么就直接扩展这段内存,realloc()返回原来的首地址;
  • 如果当前内存段后面没有足够的内存空间,那么系统会重新向内存树申请一段合适的空间,并将原来空间里的数据块释放掉,而且realloc()会返回重新申请的堆空间的首地址;
  • 如果创建失败,返回NULL, 此时原来的指针依然有效;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号