动态内存详解

本文详细介绍了C/C++中的动态内存管理,包括malloc、calloc、realloc和free的使用,强调了动态内存分配的重要性及常见错误,如NULL指针解引用、越界访问、错误释放等,并提醒注意内存泄漏问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们目前知道内存中几个常见的区

1.栈区

2.堆区

3.静态区

.........

我们先来看看目前已知的在内存中是如何开辟空间的

int a;//向栈区申请4个字节的内存
int arr[5];//向栈区申请20个字节的内存

我们会发现,数组的开辟多少空间是要提前设置好的,那么我们会不会有时候确定不了需要的字节呢

我们来举一个例子

struct Stu
{
    char name[20];
    int age;
    int scort[10];
}

我们创建了一个有十个元素的整形数组用来存放学生的成绩,我们就向内存申请了40个字节用来存放成绩。

但是如果我们需要录入的成绩有12门怎么办,或者只有5门成绩那么剩下的内存空间该何去何从?

有的人会有这样的想法,我们可不可以这样

int n;
scanf("%d",&n);
int scort[n];

我们创建一个变量来让用户自己确定数组大小,输入5就创建一个5个元素的数组。

虽然理想很丰满,但是现实很骨感(目前只有在c99支持这样的创建)。

所以这个方法就无法在所有的编译器中实现

这时我们就要引入一个全新的知识

                                            动态内存

1.动态内存函数

(1)malloc和free

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值