一.关于动态分配内存
1.我们为什么要动态分配内存?
原因:在c/c++语言中,编写程序有时不能确定数组应该定义为多大,因此这时在程序运行时要根据需要从系统中动态多地获得内存空间。所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
2.相关的函数
(1)malloc 函数
其作用是在内存的动态存储区中分配一个长度为size的连续空间
如果使用指针变量接收数据
必须先为这个指针变量分配一片指向的内存空间
有内存空间 才能存数据
导入头文件stdlib.h
使用malloc(memory alloc)申请内存空间
(2)具体实例:
这时就相当于创建了一个数组 p[n] ,这个n的值并不需要像定义一个普通数组一样必须是常量, 可以使程序运行时得出的, 或是用户输入的
(2)free函数
在堆中申请的内存空间不会像在栈中存储的局部变量一样 ,函数调用完会自动释放内存 , 如果我们不手动释放, 直到程序运行结束才会释放, 这样就可能会造成内存泄漏, 即堆中这片内存中的数据已经不再使用, 但它一直占着这片空间,所以当我们申请的动态内存不再使用时 ,一定要及时释放 .
(2)具体实例: