これは、動的に割り当てられたバッファにファイル「hello.txt」を読み込む単純なプログラムです。最初はサイズが10です(いっぱいになるとサイズが2倍になります)。
valgrindを実行すると、メモリリークが発生しているように見えますが、何が問題なのかわかりません。使用後にバッファのメモリを解放しました。
エラーは「条件付きジャンプまたは移動は初期化されていない値に依存する」のようです。
誰かがメモリリークがあるかどうかを特定するのを手伝ってもらえますか?そうでない場合、問題は何ですか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFFERSIZE 10
int main(int argc, char const *argv[])
{
FILE *source;
source = fopen("hello.txt","r");
char *buffer = (char *)malloc(BUFFERSIZE);
int current_size = BUFFERSIZE;
int len = 0;
char c;
while((c = fgetc(source)) != EOF)
{
if(len == current_size-1)
{
current_size *= 2;
buffer = (char *)realloc(buffer,current_size);
}
buffer[len] = c;
len++;
}
printf("%s",buffer);
free(buffer);
return 0;
}