malloc函数动态分配内存的策略
2011-06-12 00:13
141 查看
// 操作系统: Window 7 // 编译环境: VC++ 9.0 // 字符集: Unicode #include <stdlib.h> #include <string.h> int main() { int len; char * str; str = (char *)malloc(sizeof(char)); //代码执行这句后len值为16; len = strlen(str); str = (char *)malloc(sizeof(char)*4); //代码执行这句后len值为16; len = strlen(str); str = (char *)malloc(sizeof(char)*5); //代码执行这句后len值为24; len = strlen(str); str = (char *)malloc(sizeof(char)*12); //代码执行这句后len值为24; len = strlen(str); str = (char *)malloc(sizeof(char)*13); //代码执行这句后len值为32; len = strlen(str); str = (char *)malloc(sizeof(char)*20); //代码执行这句后len值为32; len = strlen(str); str = (char *)malloc(sizeof(char)*21); //代码执行这句后len值为40; len = strlen(str); str = (char *)malloc(sizeof(char)*36); //代码执行这句后len值为48; len = strlen(str); str = (char *)malloc(sizeof(char)*37); //代码执行这句后len值为56; len = strlen(str); str = (char *)malloc(sizeof(char)*1028); //代码执行这句后len值为1040; len = strlen(str); str = (char *)malloc(sizeof(char)*1029); //代码执行这句后len值为1048; len = strlen(str); return 0; }
Unicode字符集一个字符占用16个字符,malloc动态分配内存至少分配16个字符。当要分配的内存增加到与原来至少限度长度差值少于12个字节时,动态分配的内存才增加(为什么要有12个字节的差值,这个策略还不清楚)。并且以8个字节的倍数增加,这是由于系统内存管理决定的,这也是出于对系统操作和运行速度的考虑。
相关文章推荐
- malloc函数动态分配内存的策略
- malloc函数动态分配内存的策略
- c语言之动态分配内存malloc函数
- malloc函数动态分配内存单元的用法
- 【碎片知识(3)· C语言】malloc函数动态分配内存空间在链表中的应用
- 5分钟学会最简单的策略模式
- 策略模式(Strategy Pattern)(一):策略模式介绍
- sublime 配置策略
- Strategy 策略模式
- openldap加入复杂的密码策略
- 创建SQL Server 2008的最佳方案和策略
- Web高性能策略
- 操盘策略:捕捉将涨未涨的启动临界点
- Hadoop yarn任务调度策略介绍
- 设计模式的征途—18.策略(Strategy)模式
- Linq to Sql : 并发冲突及处理策略
- 权限设计中的数据灵活存储设计策略参考[以不变应万变]
- 数据库Sharding的基本思想和切分策略
- 设计模式 -- 策略模式
- 设计模式7——策略模式