我是 c 的新手。我有一些代码试图在 Cuda 中测试,但在提取数据时遇到了一些麻烦。我的数据位于一个文件(19GB)中,我基本上计划读取一定数量的行,将它们保存到一个列表中,发送他们对整个文件进行处理并再次执行此操作。
我刚开始学习如何做到这一点并且遇到了我不确定的 C 问题,当我运行程序时,我的内存不断增加(当我在我的 mac 上访问活动监视器时),但它是似乎与 c 程序无关,它只是显示非活动内存不断增长。即使在程序停止后,内存仍然处于非活动状态(恢复它的唯一方法是重新启动)。据我所知,它不会影响程序,但看起来很奇怪,我很想知道为什么以及是否/我能做些什么?
我对 malloc 和 free 有一点了解(对不起,我更了解 Java/Python 并且从来不必这样做)但我不确定我是否应该在这段代码中这样做,因为我认为line
变量不断被覆盖。
这是代码:
int main() {
printf("Starting..");
char line[1024];
FILE *fp = fopen("output.txt","r");
if( fp == NULL ) {
return 1;
}
int count = 0;
while( fgets(line,1024,fp) ) {
//printf("%s\n",line);
count++;
}
printf(" num of lines is %i \n", count);
return 0;
}
我很感激关于这里发生了什么的任何提示/建议,以及是否有更好的方法来做到这一点?
更新:对不起,我没有提到,我注意到的行为是在程序运行时。当它运行时,不活动的内存只会不断增长。我有大约 4 个免费演出,30 秒后它全部满了,重新启动是释放它的唯一方法(即使 c 程序被杀死,内存也没有被释放)。