Memory optimize the 1d and 2d arrays
This commit is contained in:
@@ -21,19 +21,12 @@
|
|||||||
*/
|
*/
|
||||||
array_t *array_init(size_t size, size_t rows)
|
array_t *array_init(size_t size, size_t rows)
|
||||||
{
|
{
|
||||||
array_t *arr = calloc(sizeof(array_t), 1);
|
array_t *arr = calloc(sizeof(array_t) + (size * rows), 1);
|
||||||
if (!arr)
|
if (!arr)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: Failed to allocate memory for array", __func__);
|
fprintf(stderr, "%s: Failed to allocate memory for array", __func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
arr->data = calloc(size, rows);
|
|
||||||
if (!arr->data)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: Failed to allocate memory for data", __func__);
|
|
||||||
free(arr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
arr->rows = rows;
|
arr->rows = rows;
|
||||||
arr->size = size;
|
arr->size = size;
|
||||||
@@ -103,7 +96,6 @@ void array_free(array_t *arr)
|
|||||||
{
|
{
|
||||||
fprintf(stderr, "%s: ptr dereferences to NULL\n", __func__);
|
fprintf(stderr, "%s: ptr dereferences to NULL\n", __func__);
|
||||||
}
|
}
|
||||||
free(arr->data);
|
|
||||||
free(arr);
|
free(arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,19 +109,12 @@ void array_free(array_t *arr)
|
|||||||
*/
|
*/
|
||||||
array_2d_t *array_2d_init(size_t size, size_t rows, size_t cols)
|
array_2d_t *array_2d_init(size_t size, size_t rows, size_t cols)
|
||||||
{
|
{
|
||||||
array_2d_t *arr = calloc(sizeof(array_2d_t), 1);
|
array_2d_t *arr = calloc(sizeof(array_2d_t) + (size * rows * cols), 1);
|
||||||
if (!arr)
|
if (!arr)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: Failed to allocate memory for array", __func__);
|
fprintf(stderr, "%s: Failed to allocate memory for array", __func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
arr->data = calloc(size, rows * cols);
|
|
||||||
if (!arr->data)
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: Failed to allocate memory for data", __func__);
|
|
||||||
free(arr);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
arr->rows = rows;
|
arr->rows = rows;
|
||||||
arr->cols = cols;
|
arr->cols = cols;
|
||||||
@@ -205,7 +190,6 @@ void array_2d_free(array_2d_t *x)
|
|||||||
{
|
{
|
||||||
fprintf(stderr, "%s: ptr dereferences to NULL\n", __func__);
|
fprintf(stderr, "%s: ptr dereferences to NULL\n", __func__);
|
||||||
}
|
}
|
||||||
free(x->data);
|
|
||||||
free(x);
|
free(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,33 +25,33 @@
|
|||||||
|
|
||||||
typedef struct array_s
|
typedef struct array_s
|
||||||
{
|
{
|
||||||
void *data;
|
|
||||||
size_t rows;
|
size_t rows;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
uint8_t data[1];
|
||||||
} array_t;
|
} array_t;
|
||||||
|
|
||||||
typedef struct array_2d_s
|
typedef struct array_2d_s
|
||||||
{
|
{
|
||||||
void *data;
|
|
||||||
size_t rows;
|
size_t rows;
|
||||||
size_t cols;
|
size_t cols;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
uint8_t data[1];
|
||||||
} array_2d_t;
|
} array_2d_t;
|
||||||
|
|
||||||
typedef struct array_c_s
|
typedef struct array_c_s
|
||||||
{
|
{
|
||||||
void *real;
|
|
||||||
void *imaginary;
|
|
||||||
size_t rows;
|
size_t rows;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
void *real;
|
||||||
|
void *imaginary;
|
||||||
} array_c_s_t;
|
} array_c_s_t;
|
||||||
|
|
||||||
typedef struct array_c_p_s
|
typedef struct array_c_p_s
|
||||||
{
|
{
|
||||||
void *magnitude;
|
|
||||||
void *phase;
|
|
||||||
size_t rows;
|
size_t rows;
|
||||||
size_t size;
|
size_t size;
|
||||||
|
void *magnitude;
|
||||||
|
void *phase;
|
||||||
} array_c_p_t;
|
} array_c_p_t;
|
||||||
|
|
||||||
// Array.c
|
// Array.c
|
||||||
|
|||||||
Reference in New Issue
Block a user