动态的内存管理

张开发
2026/4/17 3:54:26 15 分钟阅读

分享文章

动态的内存管理
1.为什么要动态分配内存有的时候我们需要的空间大小只有在程序运行的时候才知道这时候之前数组编译开辟空间的方式就不能满足了C语言引入了动态内存开辟让程序员资金就可以申请和释放空间这样就比较灵活了2.malloc和free2.1 mallocC语言提供了一个动态内存开辟的函数void* malloc(size_t size);这个函数像内存申请了一快连续可用的空间并返回这块空间的指针如果开辟成功则返回指向这块空间的指针如果开辟失败则返回一个NULL指针因此malloc的返回值必须要做一个检查返回类型是void*所以返回类型需要自己决定如果参数size为0malloc的行为标准是未定义的取决于编译器2.2 freeC语言提供了另外一个函数free专门是用来做动态内存的释放和回收的函数原理如下void freevoid *ptr;free是用来释放动态开辟的内存。如果参数ptr指向的空间不是动态开辟的那free的行为是未定义的如果参数ptr是NULL指针则函数什么事都不用做malloc和free都声明在stdlib.h头文件中举个例子#includestdio.h #includestdio.h int main(){ int num0; scanf(%d ,%num); int arr[num]{0}; int *ptrNULL; ptr(int*)malloc(sizeof(int)*num); if(NULL!ptr){ int i0; for(i0;inum;i){ } } }

更多文章