Het is een beetje een basic vraag maar ik zit een beetje vast. Heb zelfs in het standaardwerk 'the C programming language' van K&R geen voorbeeld kunnen vinden hierover
. De functie convert_to_array wordt in de main in een for loopje meerder keren aangeroepen. Hier wordt dus telkens geheugen voor gealloceerd, dit programma werkt prima. Maar volgens mij heeft het een geheugenlek want ik geeff de ruimte nooit vrij. Echter als ik free(arr) doe krijg een Heap corruption error. Hoe zou het dan moeten?

C:
1
2
3
4
5
6
7
8
9
10
11
| //main.c (rest van het programma even weg gelaten) #include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> #include "functions.h" // header file with functions main(){ int i; char *arr; arr=convert_to_array(i); } |
C:
1
2
3
4
5
6
7
8
| char* convert_to_array(int num) { char *arr; arr = malloc((int)log10(num)*sizeof(char)); //allocate memory sprintf (arr, "%d" ,num); //(num, buf, 10); return arr; // return pointer } |