首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

realloc内存碎片?该如何处理

2012-05-13 
realloc内存碎片?char *sint i,n2s(char *)calloc(1,sizeo(char))for(i0i10i++){s(char *)reall

realloc内存碎片?
char *s;
int i,n=2;
s=(char *)calloc(1,sizeo(char));
for(i=0;i<10;i++)
{
s=(char *)realloc(n++,sizeo(char)); //放在For循环里s的字符是乱码的,怎么回事啊
s=getchar();
}


[解决办法]
s=(char *)realloc(n++,sizeo(char)); 
realloc的函数用法你用错了。
void *realloc(void *mem_address, unsigned int newsize); 
先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

[解决办法]
void *realloc(void *mem_address, unsigned int newsize);
先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

C/C++ code
int main(){    TCHAR *s;    int i,n=2;    s=(TCHAR *)calloc(1,sizeof(TCHAR));    for(i=0;i<10;i++)    {        s=(TCHAR *)realloc(s,(n++)*sizeof(TCHAR));         s[n-3]=getchar();        getchar();    }    for(i=0;i<n-2;i++)        printf("%c",s[i]);    system("PAUSE");    return 0;} 

热点排行