c语言fclose导致系统崩溃,c语言中fopen之后不fclose会造成内存泄漏问题
原创作品转载请注明出处
如果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会造成内存泄漏问题相关推荐
- c语言fclose导致系统崩溃,c - fclose()导致分段错误 - 堆栈内存溢出
我有一个制表符分隔的文本文件,我正在解析. 其第一列包含格式为chrX字符串,其中X表示一组字符串,例如"1","2",......,"X" ...
- wsappx导致系统崩溃
wsappx导致系统崩溃 现象描述 系统的内存和cpu都被wsappx这个进程给占用了,删除一个1kb的文件,都要半天,系统异常卡慢 分析 经过网上的说法,是windows系统应用更新导致的此问题,把 ...
- c语言new的作用,关于c语言中new的使用?
必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的. 所以程序就是: long *pNumber = (long*)malloc(sizeof ...
- c语言中fopen的作用,c语言中fopen的用法
在C语言中,fopen也是一个打开文件的函数.在C语言的命令窗口中输入doc fopen或者help fopen就可以获得该函数的帮助信息.下面小编就跟你们详细介绍下c语言中fopen的用法,希望对你 ...
- C语言中fopen函数使用举例及打开方式列表
C语言中fopen函数使用举例及打开方式列表 虽然用的是c++的头文件,但是是c的代码,建议纯c的小伙伴把头文件换掉,并删除using namespace std; #include<iostr ...
- C语言中fopen()函数的使用方法
fopen()函数的使用方法 C语言中fopen()的基本用法: 语法: FILE *fopen(const char *filename, const char *mode);` 返回值: fope ...
- linux蓝屏漏洞,WIN 10漏洞:访问特定本地设备导致系统崩溃
Windows 10 出现了新 bug:在浏览器的地址栏中或使用其他 Windows 命令打开特定路径,即可使电脑系统崩溃并显示蓝屏. 自去年 10 月以来,Windows 安全研究员 Jonas L ...
- WIN 10 又出诡异Bug,访问特定本地设备导致系统崩溃
本文转载自 小道黑客 Windows 10 出现了新 bug:在浏览器的地址栏中或使用其他 Windows 命令打开特定路径,即可使电脑系统崩溃并显示蓝屏. 自去年 10 月以来,Windows 安全 ...
- linux频繁读写i2c,ZYNQ7020 在Linux下I2C频繁读取导致系统崩溃
I2C连续频繁读取单字节,读取频率20hz,每次读写20次,每次需要读取不同地址单字节. 系统崩溃前多次出现i2c连接超时错误. 一款传感器芯片. 崩溃时间不定,几个小时崩溃,有时几分钟崩溃.cdns ...
最新文章
- 没啥好标题才显得有逼格对叭-CSDN
- 通俗讲解【重定向】及其实践
- flask笔记3-模板
- 介绍org.eclipse.core.runtime中工具类
- 实测6大App「青少年模式」:有徒具形式,也有虚情假意!
- jQuery链式操作[转]
- 7系列高速收发器简介 GTP IP核
- 寻找春天nbsp;九宫格日记-2011.09.29
- Vue中部署百度富文本编辑器UEditor及其自带的后端,并加入秀米插件
- 记学习量化投资 企业估值
- Fedora 9在用VMware 5.5、6.5虚拟机安装和硬盘安装中遇见的几点问题
- @程序员,你哄女朋友要是有写代码那么 6,你早就脱单了
- 24个希腊字母的英文写法
- python绘制旭日图
- input type=“radio“默认按钮选中状态
- es安装插件 ik ansj pinyin
- 重拾TypeScript-21 类中使用泛型
- win 10查看wifi密码
- win10 破解远程桌面用户连接数限制
- 自动驾驶规划控制系列文章(一)——车辆数学模型