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