Я пытаюсь создать массив с размером буфера исправлений, который отличается от другого метода, предлагаемого стрелкой apche, который является методом конструктора добавления, который увеличивает размер каждый раз, когда добавляется новый элемент. Проблема, с которой я столкнулся, заключается в том, что после создания массива, когда я пытаюсь прочитать значение, я продолжаю получать странное число, которое говорит мне, что данные считываются из неправильной памяти или чего-то еще. У кого-нибудь есть идеи, что происходит?
GError *error = NULL;
// First we create the array for each of the members of the position structure object
GArrowFloatArray * x_array;
GArrowFloatArray * y_array;
GArrowFloatArray * z_array;
// The number of rows per record batch/ array would be 500
// defining array length which must be equal for all array
gint64 len = 2;
// not Null element in the array- GArrowBuffer *data = NULL
// no Null element -> gint64 n_nulls = 0;
// creating the data to input into the array
GArrowBuffer * x_buffer;
GArrowBuffer * y_buffer;
GArrowBuffer * z_buffer;
guint8 data_x[len];
guint8 data_y[len];
guint8 data_z[len];
//generating the values
for ( int i = 0; i < len; i++){
data_x[i] = 1;
data_y[i] = 1;
data_z[i] = 1;
g_print("%d ", data_x[i]);
g_print("%d ", data_y[i]);
g_print("%d ", data_z[i]);
}
// Creating the buffer
x_buffer = garrow_buffer_new(data_x, len * sizeof(gint64));
y_buffer = garrow_buffer_new(data_y, len* sizeof(gint64));
z_buffer = garrow_buffer_new(data_z, len* sizeof(gint64));
// creating arrow float aray
x_array = garrow_float_array_new(len, x_buffer, NULL, 0);
y_array = garrow_float_array_new(len, y_buffer, NULL, 0);
z_array = garrow_float_array_new(len, z_buffer, NULL, 0);
//g_print("%s", garrow_array_to_string (GARROW_ARRAY(x_array),NULL));
const gfloat * to_print = garrow_float_array_get_values (x_array,&len);
g_print("%g\n", *to_print);
// declaring fields
GArrowField *field_x, *field_y, *field_z;
// all the array are the same type
// finding the data type
//GArrowDataType * data_type_x = garrow_array_get_value_data_type(x_array);
// GArrowDataType * data_type_y = garrow_array_get_value_data_type(x_array);
// GArrowDataType * data_type_z = garrow_array_get_value_data_type(x_array);
field_x = garrow_field_new ("x_column", GARROW_DATA_TYPE(garrow_float_data_type_new()));
field_y = garrow_field_new ("y_column", GARROW_DATA_TYPE(garrow_float_data_type_new()));
field_z = garrow_field_new ("z_column", GARROW_DATA_TYPE(garrow_float_data_type_new()));
Результат
1 1 1 1 1 1 2.36943e-38
x_column: [
2.36943e-38,
1.34222e+08
]
y_column: [
2.36943e-38,
0.000265695
]
z_column: [
1.34222e+08,
-1.0248e-23
]
columns[0](x_column): [2.36943e-38, 1.34222e+08]
columns[1](y_column): [2.36943e-38, 0.000265695]
columns[2](z_column): [1.34222e+08, -1.0248e-23]