原创作品转载请注明出处

如果fopen之后不fcolse会怎样呢?

#include

int main() {

FILE* fp;

fp = fopen("record.dat","w");

return 0;

}

这里声明了一个FILE类型的指针,它指向了打开的一个当前目录下的record.dat文件。这个过程其实是在内存当中多了一个FILE结构体。这种结构体当中各个字段保存着fopen的文件的信息。那如果fopen多个文件之后,并不进行fclose会不会造成内存当中产生很多的这样的结构体,造成内存泄漏呢?做一个实验验证一下。

打开1个文件:

#include

int main() {

FILE* fp;

int i;

for(i=0;i<500;i++) {

fp = fopen("record.dat","w");

if(1==i) {

system("pause");

}

}

return 0;

}

这里内存使用了664K

打开500个文件:

#include

int main() {

FILE* fp;

int i;

for(i=0;i<500;i++) {

fp = fopen("record.dat","w");

if(499==i) {

system("pause");

}

}

return 0;

}

这里内存使用了860K

很明显,多打开了499个文件,内存多用了196K。

这个小程序也可以写成这样,然后同时打开任务管理器,在cmd当中按一下键,内存当中就会多一个结构体,按理说应该会看到任务管理器当中这个进程占用的内存在不断变大,但是不知道为什么一直是波动。

#include

int main() {

FILE* fp;

int i;

for(i=0;i<500;i++) {

char c[50];

sprintf(c,"record%d.dat",i);

fp = fopen(c, "w");

system("pause");

}

return 0;

}

另外还有一个问题就是,当循环的范围比较大时,当前目录下并没有生成那么多文件。然后就修改了一下程序:

#include

int main() {

FILE* fp;

int i;

for(i=0;i<1000;i++) {

char c[50];

sprintf(c,"record%d.dat",i);

while(( fp = fopen(c, "w") )== NULL) ;

if(999==i) {

system("pause");

}

}

return 0;

}

运行之后发现到该生成第509个文件的时候进入了死循环。刚开始以为系统目录下文件的数量是有限制的。。。可能程序运行过程当中fopen的文件个数是有限制的?

反正不管怎样,在写程序的过程中要养成良好的习惯,fopen后要记得fclose,malloc之后要记得free,new之后要记得delete. 避免出现内存泄漏的问题。

c语言fclose导致系统崩溃,c语言中fopen之后不fclose会造成内存泄漏问题相关推荐

  1. c语言fclose导致系统崩溃,c - fclose()导致分段错误 - 堆栈内存溢出

    我有一个制表符分隔的文本文件,我正在解析. 其第一列包含格式为chrX字符串,其中X表示一组字符串,例如"1","2",......,"X" ...

  2. wsappx导致系统崩溃

    wsappx导致系统崩溃 现象描述 系统的内存和cpu都被wsappx这个进程给占用了,删除一个1kb的文件,都要半天,系统异常卡慢 分析 经过网上的说法,是windows系统应用更新导致的此问题,把 ...

  3. c语言new的作用,关于c语言中new的使用?

    必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的. 所以程序就是: long *pNumber = (long*)malloc(sizeof ...

  4. c语言中fopen的作用,c语言中fopen的用法

    在C语言中,fopen也是一个打开文件的函数.在C语言的命令窗口中输入doc fopen或者help fopen就可以获得该函数的帮助信息.下面小编就跟你们详细介绍下c语言中fopen的用法,希望对你 ...

  5. C语言中fopen函数使用举例及打开方式列表

    C语言中fopen函数使用举例及打开方式列表 虽然用的是c++的头文件,但是是c的代码,建议纯c的小伙伴把头文件换掉,并删除using namespace std; #include<iostr ...

  6. C语言中fopen()函数的使用方法

    fopen()函数的使用方法 C语言中fopen()的基本用法: 语法: FILE *fopen(const char *filename, const char *mode);` 返回值: fope ...

  7. linux蓝屏漏洞,WIN 10漏洞:访问特定本地设备导致系统崩溃

    Windows 10 出现了新 bug:在浏览器的地址栏中或使用其他 Windows 命令打开特定路径,即可使电脑系统崩溃并显示蓝屏. 自去年 10 月以来,Windows 安全研究员 Jonas L ...

  8. WIN 10 又出诡异Bug,访问特定本地设备导致系统崩溃

    本文转载自 小道黑客 Windows 10 出现了新 bug:在浏览器的地址栏中或使用其他 Windows 命令打开特定路径,即可使电脑系统崩溃并显示蓝屏. 自去年 10 月以来,Windows 安全 ...

  9. linux频繁读写i2c,ZYNQ7020 在Linux下I2C频繁读取导致系统崩溃

    I2C连续频繁读取单字节,读取频率20hz,每次读写20次,每次需要读取不同地址单字节. 系统崩溃前多次出现i2c连接超时错误. 一款传感器芯片. 崩溃时间不定,几个小时崩溃,有时几分钟崩溃.cdns ...

最新文章

  1. 没啥好标题才显得有逼格对叭-CSDN
  2. 通俗讲解【重定向】及其实践
  3. flask笔记3-模板
  4. 介绍org.eclipse.core.runtime中工具类
  5. 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
  6. jQuery链式操作[转]
  7. 7系列高速收发器简介 GTP IP核
  8. 寻找春天nbsp;九宫格日记-2011.09.29
  9. Vue中部署百度富文本编辑器UEditor及其自带的后端,并加入秀米插件
  10. 记学习量化投资 企业估值
  11. Fedora 9在用VMware 5.5、6.5虚拟机安装和硬盘安装中遇见的几点问题
  12. @程序员,你哄女朋友要是有写代码那么 6,你早就脱单了
  13. 24个希腊字母的英文写法
  14. python绘制旭日图
  15. input type=“radio“默认按钮选中状态
  16. es安装插件 ik ansj pinyin
  17. 重拾TypeScript-21 类中使用泛型
  18. win 10查看wifi密码
  19. win10 破解远程桌面用户连接数限制
  20. 自动驾驶规划控制系列文章(一)——车辆数学模型

热门文章

  1. Neohooken PBD 文献笔记
  2. 关于人们对抖音的看法的调研报告
  3. SSO(Single Sign-On)单点登录是怎么实现的?
  4. 20185111019石燕鹏组
  5. 20230207 杂记
  6. 每个程序员都应该参加一次 GDD
  7. 【2021版】想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础—Office2010
  8. 爱彼迎的数据分析与建模
  9. axisfault,faultcode:server.userException异常的解决办法
  10. 22年的甲骨文生涯后 谷歌云新主管面临一场文化冲突