some debugging of memory leaks
This commit is contained in:
@@ -188,14 +188,15 @@ int8_t polar_decoder(
|
|||||||
|
|
||||||
//Keep only the best "listSize" number of entries.
|
//Keep only the best "listSize" number of entries.
|
||||||
if (currentListSize > listSize) {
|
if (currentListSize > listSize) {
|
||||||
for (int i = 0; i < 2*listSize; i++) {
|
for (int i = 0; i < currentListSize; i++) {
|
||||||
listIndex[i]=i;
|
listIndex[i]=i;
|
||||||
pathMetric[i] = dlist[i].pathMetric;
|
pathMetric[i] = dlist[i].pathMetric;
|
||||||
}
|
}
|
||||||
|
|
||||||
nr_sort_asc_double_1D_array_ind(pathMetric, listIndex, currentListSize);
|
nr_sort_asc_double_1D_array_ind(pathMetric, listIndex, currentListSize);
|
||||||
for (int i = 0; i < 2*listSize; i++) sorted_dlist[i]=&dlist[listIndex[i]];
|
currentListSize = listSize;
|
||||||
}
|
}
|
||||||
|
stop_meas(sorting);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//sort listIndex[listSize, ..., 2*listSize-1] in descending order.
|
//sort listIndex[listSize, ..., 2*listSize-1] in descending order.
|
||||||
uint8_t swaps, tempInd;
|
uint8_t swaps, tempInd;
|
||||||
@@ -275,7 +276,7 @@ int8_t polar_decoder(
|
|||||||
}
|
}
|
||||||
currentListSize = listSize;
|
currentListSize = listSize;
|
||||||
}*/
|
}*/
|
||||||
stop_meas(sorting);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i=0; i<polarParams->crcParityBits; i++) {
|
for (int i=0; i<polarParams->crcParityBits; i++) {
|
||||||
@@ -298,7 +299,9 @@ int8_t polar_decoder(
|
|||||||
//perror("[SCL polar decoder] All list entries have failed the CRC checks.");
|
//perror("[SCL polar decoder] All list entries have failed the CRC checks.");
|
||||||
free(d_tilde);
|
free(d_tilde);
|
||||||
for (int i=0;i<2*listSize;i++) {
|
for (int i=0;i<2*listSize;i++) {
|
||||||
|
// printf("error: Freeing dlist[%d].bit %p\n",i,dlist[i].bit);
|
||||||
nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1));
|
nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1));
|
||||||
|
// printf("error: Freeing dlist[%d].llr %p\n",i,dlist[i].bit);
|
||||||
nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1));
|
nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1));
|
||||||
free(dlist[i].crcChecksum);
|
free(dlist[i].crcChecksum);
|
||||||
}
|
}
|
||||||
@@ -336,6 +339,7 @@ int8_t polar_decoder(
|
|||||||
|
|
||||||
free(d_tilde);
|
free(d_tilde);
|
||||||
for (int i=0;i<2*listSize;i++) {
|
for (int i=0;i<2*listSize;i++) {
|
||||||
|
// printf("correct: Freeing dlist[%d].bit %p\n",i,dlist[i].bit);
|
||||||
nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1));
|
nr_free_uint8_t_2D_array(dlist[i].bit, (polarParams->n+1));
|
||||||
nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1));
|
nr_free_double_2D_array(dlist[i].llr, (polarParams->n+1));
|
||||||
free(dlist[i].crcChecksum);
|
free(dlist[i].crcChecksum);
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ void updateCrcChecksum2(decoder_list_t **dlist, uint8_t **crcGen,
|
|||||||
uint8_t listSize, uint32_t i2, uint8_t len);
|
uint8_t listSize, uint32_t i2, uint8_t len);
|
||||||
|
|
||||||
|
|
||||||
void nr_sort_asc_double_1D_array_ind(double *matrix, uint8_t *ind, uint8_t len);
|
void nr_sort_asc_double_1D_array_ind(double *matrix, int *ind, int len);
|
||||||
|
|
||||||
uint8_t **crc24c_generator_matrix(uint16_t payloadSizeBits);
|
uint8_t **crc24c_generator_matrix(uint16_t payloadSizeBits);
|
||||||
uint8_t **crc11_generator_matrix(uint16_t payloadSizeBits);
|
uint8_t **crc11_generator_matrix(uint16_t payloadSizeBits);
|
||||||
|
|||||||
@@ -130,8 +130,8 @@ void nr_free_uint8_t_3D_array(uint8_t ***input, uint16_t xlen, uint16_t ylen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void nr_free_uint8_t_2D_array(uint8_t **input, uint16_t xlen) {
|
void nr_free_uint8_t_2D_array(uint8_t **input, uint16_t xlen) {
|
||||||
for (int i = 0; i < xlen; i++) free(input[i]);
|
for (int i = 0; i < xlen; i++) free(input[i]);
|
||||||
free(input);
|
free(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nr_free_double_2D_array(double **input, uint16_t xlen) {
|
void nr_free_double_2D_array(double **input, uint16_t xlen) {
|
||||||
@@ -144,14 +144,14 @@ void nr_free_double_2D_array(double **input, uint16_t xlen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Modified Bubble Sort.
|
// Modified Bubble Sort.
|
||||||
void nr_sort_asc_double_1D_array_ind(double *matrix, uint8_t *ind, uint8_t len) {
|
void nr_sort_asc_double_1D_array_ind(double *matrix, int *ind, int len) {
|
||||||
uint8_t swaps;
|
int swaps;
|
||||||
double temp;
|
double temp;
|
||||||
uint8_t tempInd;
|
int tempInd;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < len; i++) {
|
for (int i = 0; i < len; i++) {
|
||||||
swaps = 0;
|
swaps = 0;
|
||||||
for (uint8_t j = 0; j < (len - i) - 1; j++) {
|
for (int j = 0; j < (len - i) - 1; j++) {
|
||||||
if (matrix[j] > matrix[j + 1]) {
|
if (matrix[j] > matrix[j + 1]) {
|
||||||
temp = matrix[j];
|
temp = matrix[j];
|
||||||
matrix[j] = matrix[j + 1];
|
matrix[j] = matrix[j + 1];
|
||||||
|
|||||||
Reference in New Issue
Block a user