IOS--Day03---memory allocation 动态内存分配
内存: 分为五个区域
- 栈区-----------系统分配以及回收内存.函数体内创建的变量存在栈区
- 堆区------------由用户分配和回收,如果用户忘记回收 可能会导致内存不够用, 程序退出时,堆内存由系统回收
- 常量区-------------用于存放常量的内存区域
- 静态区 -------------定义在函数体外面的变量,由系统开辟空间,程序运行过程中一直存在,直至程序退出,由系统回收
- 代码区----------------存放代码编译结果
---------------------------------------------------------------------------------
malloc函数
void *malloc(unsigned int size);
malloc函数向系统申请分配size个连续的内存空间 但是不会把分配的空间清0
free();//释放内存
-----------------------------------
void *calloc ( unsigned n,unsigned size);
分配n个size大小的空间
与malloc不同的是calloc申请的内存空间会初始化成0;
----------------------------------
void *realloc(void *p, unsigned newSize);
按新的长度重新分配内存
这三种都使用free释放
------------------------------------------
内存操作函数
void *memset(void *s, int c, size_t n);
memset (p,0,sizeof(Student));
s开始,长度为n的所有字节赋值为c;
通常用于清楚结构体或者数组数据
void *memcpy(void *dest,const void *source,size_t n);
从source 拷贝 n个字节到dest中
int memcmp(const void *buf1,const void *buf2,unsigned int count);
以上内存操作函数既可以用于堆内存页可以用于栈内存
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。