麻烦前辈们帮忙看看,如下两段代码,看上去几乎功能一样,为什么结果却大大不同??

TooSchoolForCool 2014-06-18 12:48:53
先来第一段

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int arr[50000];

FILE * fp = fopen("data.txt", "wb+");

int ret = fwrite(arr, sizeof(arr), 1, fp);
if (!ret)
printf("ERROR!\n");

return 0;

}


运行结果没有报错,而且文件确实写入成功了,生成的data.txt文件大小为196kb,如图


在来看第二段代码

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int * arr;

arr = (int *)malloc(sizeof(int) * 50000);

FILE * fp = fopen("data.txt", "wb+");

int ret = fwrite(arr, sizeof(int)*50000, 1, fp);
if (!ret)
printf("ERROR!\n");

return 0;

}


这段代码运行以来也没有问题,但是在去看他生成的data.txt文件的时候问题就出来了,只有1kb,这是怎么回事??


我想了好久也没想出来,大概猜侧这和栈和堆有关,麻烦知道的前辈,高手们能帮帮我,谢谢。
自学不易,且行且珍惜!
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
brookmill 2014-06-18
  • 打赏
  • 举报
回复
关于malloc再啰嗦两句: 1. 要检查它的返回值是否NULL 2. 用完之后要记得free
TooSchoolForCool 2014-06-18
  • 打赏
  • 举报
回复
引用 1 楼 brookmill 的回复:
在main里面return之前加一行fclose(fp)再试试?
大哥,不好意思,这个例子我发错了,不太对,我重开一贴再来问。
brookmill 2014-06-18
  • 打赏
  • 举报
回复
在main里面return之前加一行fclose(fp)再试试?

69,373

社区成员

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

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