读书人

realloc内存碎片?该如何处理

发布时间: 2012-05-13 16:39:43 作者: rapoo

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;} 

读书人网 >C语言

热点推荐