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);

以上内存操作函数既可以用于堆内存页可以用于栈内存

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。