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 *