C语言动态内存分配

本文探讨了C语言中动态内存分配的必要性,通过对比传统数组的缺点,阐述了动态内存分配的优势。详细介绍了malloc函数、动态一维数组的构建及realloc函数的使用,用于在运行时改变数组大小。同时,分析了静态内存与动态内存的区别,指出动态内存需手动分配和释放,而静态内存由系统自动管理。

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

C语言动态内存分配

​ 前言:要理解动态内存分配,我们首先从传统数组的缺陷开始讲起,为了弥补这些缺陷,我们提出了动态内存分配这个概念,然后间接如何用代码实现动态内存分配以及动态内存分配的原理(涉及到C语言内存方面和指针的知识),然后讲解了和静态内存分配的区别,之后还补充了一定堆栈的知识。重点内容主要在第3点里面的代码部分以及图解部分

1.传统数组的缺点

​ (1)数组长度必须事先制定,且只能是常整数,不能是变量

​ 例子:

​ int arr[4];

​ (2)传*统形式定义的数组,该数组的内存程序员无法手动释放。*在一个函数运行期间,系统为该函数中数组所分配的空间会一直存在,直到该函数运行完毕时,数组的空间才会释放。

​ (3)数组的长度一旦定义,其长度就不能再更改,数组的长度不能再函数运行的过程中动态的扩充或缩小。

​ (4)A函数定义的数组(静态分配的内存),在A函数运行期间可以被其它函数使用,但A函数运行完毕之后,A函数中的数组将无法在被其他函数使用。(因为A函数的内存空间会被释放)即传统方式定义的数组不能跨函数使用

2.为什么需要动态内存分配

​ (1)动态数组很好的解决了传统数组的4个缺陷

3.动态内存分配举例_动态数组的构造

​ (1)知识点1:malloc函数的用法

#include <stdio.h>
#include <malloc.h>

int main(void)
{
   
    int i = 4;	//分配了4个字节,静态分配
    int *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值