内存分配大全——windows 、IOS系统下C++\objective C内存分配
来源:互联网 发布:数据分析报告怎么 编辑:程序博客网 时间:2024/05/17 07:49
1.在调用 alloca的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在栈上。所以释放不需要用户使用free。
realloc:
calloc:
malloc:
new:
下面是windows系统提供的API函数:
1. VirtualAlloc/VirtualAllocEx
2. HeapAlloc/HeapFree
3. GlobalAlloc/GlobalFree
除了windows,当前比较热门的移动开发ios系统也提供了自己的内存分配函数。
在IOS中除了使用new可以内存之外,还有alloc函数在堆上来分配内存。而IOS系统中采用alloc函数分配的一个显著特征就是自由选择初始化函数,亦即类的初始化方法可以有多个,但是一般会有一个指定初始化方法。这种内存分配方式符合ios遵循的灵活风格。
而释放内存,ios一般采用的参考计数方法,即某一对象的计数值为0时会自动调用其dealloc方法释放其申请的内存。而参考计数的增1和减1的方法为:retain和release方法。具体的关于对象的属性请参考我的另外一篇文章:Objective-C中变量采用@property的各个属性值的含义
PS:为了更好的理解内存分配,我们可以了解一下内存分区。1)、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2)、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。
3)、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放。注意:全局区又可分为未初始化全局区:.bss段和初始化全局区:data段。
4)、常量区—常量字符串就是放在这里的。 程序结束后由系统释放
5)、代码区—存放函数体的二进制代码。
- 内存分配大全——windows 、IOS系统下C++\objective C内存分配
- C内存—>内存分配
- Objective-C Runtime中的并发内存分配
- Objective-C Runtime中的并发内存分配
- Objective-C Runtime中的并发内存分配
- Objective-C编程 - 1. 浅谈内存分配
- x86系统下的c语言内存分配解析
- C语言——内存分配
- C语言——分配内存
- C++——内存分配方式详解
- C语言—动态内存分配
- c/C++内存分配
- C内存分配
- C语言内存分配
- C/C++内存分配
- C/C++内存分配
- c内存分配
- C/C++内存分配
- 关于内存泄露的几点问题
- sql分页查询
- Linux: PRVF-5449 : Check of Voting Disk location "ORCL:<diskname>(ORCL:<diskname>)" failed [ID 12675
- Andrid 简易实现画面随意移动并显示坐标。
- Linux下移植OpenCV + Qt 到ARM(Tiny6410)总结
- 内存分配大全——windows 、IOS系统下C++\objective C内存分配
- 路由器的原理与作用
- lamp架构师必看经典
- scribe日志收集系统
- 测试tomcat同solr的连接
- 关于Intent.FLAG_RECEIVER_REPLACE_PENDING
- 【Android自动化测试】02. Athrun之环境配置
- spring mvc系列文章 - springmvc spring mybatis ibatis freemark整合开发(1.0版)
- nginx 处理accept