69,369
社区成员
发帖
与我相关
我的任务
分享
#define TEXT_COUNT 1000000
#define TEXT_LEN 255
typedef char * TEXT;
TEXT *text = (TEXT *)malloc(sizeof(TEXT) * TEXT_COUNT);
memset(text, 0, TEXT_COUNT); // 多余,后面每个都赋值了,虽然是好习惯,但耗时不少
for (j=0; j<TEXT_COUNT; j++)
{
text[j] = (char *)malloc(sizeof(char *) * TEXT_LEN);
memset(text[j], 0, TEXT_LEN);
}
for (j=0; j<TEXT_COUNT; j++)
{
free(text[j]);
text[j] = NULL; // 多余,马上就释放text了,虽然是好习惯,但耗时不少
}
free(text);
text = NULL; // 很好,多一个没关系
char **text=(char **)malloc(sizeof(char*)*1000000);
memset(text,0,1000000); //最好是memset(text,0,sizeof(char*)*1000000);虽然任何类型的指针大小一样
for(jj=0;jj <1000000;jj++)
{
text[jj]=(char *)malloc(sizeof(char)*255);
memset(text[jj],'\0',255);
}
for(jj=0;jj <1000000;jj++)
{
free(text[jj]);
//printf("%s\n",text[jj]);
text[jj]=NULL;
}
free(text);
text=NULL;
char **text=(char **)malloc(sizeof(char*)*1000000);
memset(text,0,1000000); //应该是memset(text,0,sizeof(int*)*1000000);
for(jj=0;jj <1000000;jj++)
{
text[jj]=(char *)malloc(sizeof(char)*255);
memset(text[jj],'\0',255);
}
for(jj=0;jj <1000000;jj++)
{
free(text[jj]);
//printf("%s\n",text[jj]);
text[jj]=NULL;
}
free(text);
text=NULL;
char **text=(char **)malloc(sizeof(char*)*1000000); //这里4M
memset(text,0,1000000);
for(jj=0;jj <1000000;jj++)
{
text[jj]=(char *)malloc(sizeof(char)*255); //这里1000000*255 = 255M
总共260M
而
char **text=(char **)malloc(sizeof(char*)*1000000); //这里4M
memset(text,0,1000000);
free(text);
text=NULL;