zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android C语言--动态内存分配

AndroidC语言 -- 分配 动态内存
2023-09-14 09:05:08 时间

C 内存管理函数
C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。

序号 函数和描述
1 void calloc(int num, int size);
在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 numsize 个字节长度的内存空间,并且每个字节的值都是0。
2 void free(void *address);
该函数释放 address 所指向的内存块,释放的是动态分配的内存空间。
3 void *malloc(int num);
在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。
4 void *realloc(void *address, int newsize);
该函数重新分配内存,把内存扩展到 newsize。
C语音里面的内存划分
栈区(栈内存,存放局部变量,自动分配和释放,里面函数的参数,方法里面的临时变量)
堆区(动态内存分配,C语音里面由程序员手动分配),最大值为操作系统的80%
全局区或静态区
常量区(字符串)
程序代码区
静态与动态内存分配
在程序运行过程中,动态指定需要使用的内存大小,手动释放,释放之后这些内存还可以被重新使用。

静态内存分配,分配内存大小的是固定,产生的问题:
1.很容易超出栈内存的最大值
2.为了防止内存不够用会开辟更多的内存,容易浪费内存。
动态内存分配,在程序运行过程中,动态指定需要使用的内存大小&#x