c语言内存管理

本文为个人学习笔记,仅用于个人学习、复习!

在进行c语言编程的时候,如果我们要存贮多个数据,一般的做法是申请一个相应类型的数组,但是这个方法只有在我们预先知道数组的大小的时候才可用,如果我们面临的问题需要我们根据相应的参数去修改申请的空间,那采用数组这种方法就显得有些捉襟见肘了。这事我们就需要学习一下c语言的动态内存管理了。

c语言为内存的分配和管理提供了几个函数,如下:
1、要熟知几个函数的返回值类型,以及参数

void *calloc(int num,int size);
//在内存中动态地分配num个长度为size的连续空间,并将每一个自己都初始化为0,所以它的结果是分配了num*size个字节长度的内存空间,并且每一个字节的值///都是0
void free(void *address);
//释放address所指向的内存块,释放的是动态分配的内存空间。
void *malloc(int num);
//在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
void *relloc(void *address,int newsize);
//将address指向的内存扩展到newsize

2、申请的内存在使用完毕后要记得free()掉。

需要特别注意一下这几个函数的返回值类型。除free()函数外,另外三个函数的返回值类型均为void *,我们在使用的时候,要进行强制类型转换。当程序返回的时候,操作系统会回收分配给程序的内存,但是,还是建议当使用动态申请内存的时候,如果不在需要内存了,应调用free()函数来释放内存。
eg:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(){
	char name[100];
	char *description;
	
	strcpy(name,"Zara Ali");
	
	description=(char *)malloc(200*sizeof(char));
	if(description==NULL){
		fprintf(stderr,"Error-unable to allocate required memory\n");
	}
	else{
		strcpy(description,"Zara Ali is a DPS student in class 10th");
	}
	printf("Name=%s\n",name);
	printf("Decription:%s\n",description);
	free(description);
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值