|
|
|
@ -3,6 +3,11 @@
|
|
|
|
|
|
|
|
|
|
#define MAX_CHUNK_SIZE 2048*2048
|
|
|
|
|
|
|
|
|
|
int min(int value1, int value2) {
|
|
|
|
|
if (value1 < value2) return value1;
|
|
|
|
|
return value2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void chunk_array_free(chunk_array_t* chunk_array) {
|
|
|
|
|
fclose(chunk_array->fp);
|
|
|
|
|
free(chunk_array->data);
|
|
|
|
@ -43,7 +48,9 @@ chunk_array_t* chunk_array_create(char* filename, size_t total_size) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
chunk_array->data = malloc(MAX_CHUNK_SIZE * sizeof(double));
|
|
|
|
|
chunk_array->chunk_size = min(MAX_CHUNK_SIZE, total_size);
|
|
|
|
|
|
|
|
|
|
chunk_array->data = malloc(chunk_array->chunk_size * sizeof(double));
|
|
|
|
|
|
|
|
|
|
if (MAX_CHUNK_SIZE > 0 && chunk_array->data == NULL) {
|
|
|
|
|
free(chunk_array);
|
|
|
|
@ -54,7 +61,6 @@ chunk_array_t* chunk_array_create(char* filename, size_t total_size) {
|
|
|
|
|
|
|
|
|
|
chunk_array->filename = filename;
|
|
|
|
|
chunk_array->init_pos = 0;
|
|
|
|
|
chunk_array->chunk_size = MAX_CHUNK_SIZE;
|
|
|
|
|
chunk_array->total_size = total_size;
|
|
|
|
|
return chunk_array;
|
|
|
|
|
}
|
|
|
|
|