请问一个关于realloc函数的问题

Novice_wen 2005-04-02 07:12:15
void main()
{
int *p;
p=new int[1];
p[0]=1;
p=(int*)realloc(p,2);
p[1]=2;
}

请问,为什么在对p重新分配空间后,原来p[0]的内容就消失了?
...全文
186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Novice_wen 2005-04-03
  • 打赏
  • 举报
回复
为什么说p[1]=2这样操作是错的?
Novice_wen 2005-04-03
  • 打赏
  • 举报
回复
哦,原来是这样啊。
MagicCarmack 2005-04-03
  • 打赏
  • 举报
回复
p=(int*)realloc(p,2);
int是4个字节的,新分配的只有两个字节,当然出问题了
arrowcy 2005-04-02
  • 打赏
  • 举报
回复
实际上这是你的操作p[1]=2都是错误的
在使用内存分配函数时,最好使用 sizeof(类型)*个数 来指定内存大小,这一方面可以避免上面你犯的那种错误,另一方面还可以增强程序的可移植性
arrowcy 2005-04-02
  • 打赏
  • 举报
回复
p=(int*)realloc(p,2);
int是4个字节的,新分配的只有两个字节,当然出问题了
纪俊 2005-04-02
  • 打赏
  • 举报
回复
同意chunhai12(苦行僧)的代码
kobefly 2005-04-02
  • 打赏
  • 举报
回复
你第二次分配的时候,比第一次还少!

第2个参数,应该是字节数,也就是2×sizeof(int) == 8
chunhai12 2005-04-02
  • 打赏
  • 举报
回复
void main()
{
int *p;
p = new int[1];
p[0] = 1;
p = (int*)realloc(p, sizeof(int)*2);
p[1] = 2;
delete[] p;
}
zjlxysunman 2005-04-02
  • 打赏
  • 举报
回复
p = (int *)realloc(p , sizeof(int) * 2);
lw1a2 2005-04-02
  • 打赏
  • 举报
回复
什么编译器?

64,684

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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