您的位置:首页 > 其它

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个字节的倍数增加,这是由于系统内存管理决定的,这也是出于对系统操作和运行速度的考虑。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: