私はcが初めてです。Cudaでテストしようとしているコードがいくつかありますが、データを取り込むのに少し問題があります.私のデータはファイル(19GB)にあり、基本的に特定の行数を読み取ってリストに保存し、それらを処理して、ファイル全体に対してこれを繰り返します。
私はこれを行う方法を学び始めたばかりで、よくわからないCの問題があります。プログラムを実行すると、メモリが増加し続けます(Macでアクティビティモニターに移動すると)が、 cプログラムに関連付けられているようには見えません。非アクティブなメモリがどんどん増えていることを示しているだけです。プログラムが停止した後でも、メモリはまだ非アクティブです (元に戻す唯一の方法は再起動することです)。私が知る限り、それはプログラムに影響を与えませんが、奇妙に思えます。その理由と、それについてできるかどうか/何ができるか知りたいですか?
line
私は malloc と free について少し理解しています (申し訳ありませんが、Java/Python をよく知っていて、これを行う必要はありませんでした) が、変数が上書きされ続けていると思ったため、このコードでそれを行うべきかどうかわかりません。
コードは次のとおりです。
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 プログラムが強制終了された場合でも、メモリは解放されません)。