realloc内存碎片?

xinglely 2012-05-12 04:18:52
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();
}
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-05-12
  • 打赏
  • 举报
回复

SYNOPSIS
#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);
void *realloc(void *ptr, size_t size);
void *calloc(size_t nmemb, size_t size);
W170532934 2012-05-12
  • 打赏
  • 举报
回复
void *realloc(void *mem_address, unsigned int newsize);
先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。


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;
}
W170532934 2012-05-12
  • 打赏
  • 举报
回复
你的代码编译都不通过呢!你是怎么试验的啊。你用的什么编译器
sheldenwade1 2012-05-12
  • 打赏
  • 举报
回复
s=(char *)realloc(n++,sizeo(char));
realloc的函数用法你用错了。
void *realloc(void *mem_address, unsigned int newsize);
先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧