动态开辟内存的三种方式



malloc (size)//申请长度为size的动态内存空间


#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)


int main(){
int num = 0;
scanf("%d", &num);
int *ptr = NULL;
ptr = (int*)malloc(num*sizeof(int));//开辟动态空间
if (NULL != ptr){//判断开辟动态空间是否成功
//if语句内是使用动态内存的操作
//int i = 0;
//for (i = 0; i < num; i++){
// *(ptr + i) = 0;//赋零操作
//
//}
}
free(ptr);//释放掉动态内存,防止发生内存泄漏
ptr = NULL; //使野指针不开悬垂,有效避免错误
system("pause");
return 0;
}




calloc (num,size)//为num个大小为size的元素开辟一个空间,并将内存的所有字节默认置零


#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)


int main(){
int *p = calloc(10, sizeof(int));//calloc申请的动态内存空间会默认 //将空间内的所有字节初始化为0
if (NULL != p){
//使用空间
}
free(p);//释放动态内存空间
p = NULL;//是指针不再悬垂
system("pause");
return 0;
}


realloc //对动态开辟得内存大小进行调整,使得动态内存管理更加灵活
realloc(ptr,size)//将内存地址为*ptr的内存进行调整,调整后的新大小为size




#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#pragma warning(disable:4996)


int main(){
int *ptr = malloc(100);
if (ptr != NULL){
//当内存开辟成功时,进行使用
}
else{
exit(EXIT_FAILURE);//报错,使用的是C语言中预设的函数
}
//扩展容量
int*p = NULL;
p = realloc(ptr, 1000);
if (p != NULL){
ptr = p;//扩展完空间后,将ptr指向新的空间
}
free(p);//释放动态内存

system("pause");
return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值