Skip to content

Commit a99ebd3

Browse files
authored
Merge pull request #21 from sir-gon/develop
[Hacker Rank]: Warmup: Plus Minus. Better memory management.
2 parents f462044 + ee4214e commit a99ebd3

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

src/lib/exercises/include/exercises/hackerrank/warmup/plus_minus.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const int HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS = 3;
88

99
char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr);
1010
void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr);
11+
void HACKERRANK_WARMUP_freePlusMinus(char **plusMinusAnswer, int n);
1112

1213
#ifdef __cplusplus
1314
} // extern "C"

src/lib/exercises/src/hackerrank/warmup/plus_minus.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,20 @@ char **HACKERRANK_WARMUP_plusMinusCalculate(int arr_count, const int *arr) {
5454
return answer;
5555
}
5656

57+
void HACKERRANK_WARMUP_freePlusMinus(char **plusMinusAnswer, int n) {
58+
for (int i = 0; i < n; i++) {
59+
free(plusMinusAnswer[i]);
60+
}
61+
free(plusMinusAnswer);
62+
}
63+
5764
void HACKERRANK_WARMUP_plusMinus(int arr_count, const int *arr) {
5865
char **output = HACKERRANK_WARMUP_plusMinusCalculate(arr_count, arr);
5966

6067
for (int i = 0; i < HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS; i++) {
6168
printf("%s", output[i]);
62-
free(output[i]);
6369
}
6470

65-
free(output);
71+
HACKERRANK_WARMUP_freePlusMinus(output,
72+
HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS);
6673
}

src/tests/unit/lib/hackerrank/warmup/plus_minus.test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ TEST_CASE("plusMinus JSON Test Cases", "[hackerrank] [jsontestcase] [warmup]") {
3232

3333
for (int i = 0; i < HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS; i++) {
3434
result_as_vector.emplace_back(result[i]);
35-
free(result[i]);
3635
}
37-
free(result);
36+
HACKERRANK_WARMUP_freePlusMinus(result,
37+
HACKERRANK_WARMUP_PLUSMINUS_LIMIT_ANSWERS);
3838

3939
CHECK(result_as_vector == testcase["expected"]);
4040

0 commit comments

Comments
 (0)