Я решил выучить C и C ++, но я борюсь с простой задачей и не могу разобраться с ней.Я был бы очень признателен за помощь.
В одной из моих функций я делаю указатель * linesLenght и вызываю другую функцию для выделения памяти и заполнения массива.В одной из функций происходит перераспределение, которое происходит 1-3 раза.В первый раз все идет как надо.Но при перераспределении со 2-й попытки я получаю поврежденный размер по сравнению с предыдущей ошибкой.
Код:
1-й.функция
char * wordWrap (int width, const char * src ){
ulong len = strlen(src);
ulong lines = getLines(width,len);
int * linesLenght = getLinesLen(&lines, src, len, width);
... }
2-я функция
int * getLinesLen(ulong * lines, const char * src, ulong srcLen, int maxLine){
int * linesLen = malloc((*lines) * sizeof(int));
ulong counter = 0;
for(int i = 0; i < srcLen; i++)
{
///other hidden logic....
if(counter == *lines)
{
printf("out! Must resize\n");
resizeLinesArr(counter + 1, &linesLen);
*lines += 1;
}
}
*lines = counter;
return linesLen;
}
3-й функтин (ЗДЕСЬ Я ПОЛУЧИЛ ОШИБКУ)
void resizeLinesArr(ulong arrLen, int ** arr)
{
int * tmp = realloc(*arr, arrLen * sizeof(int));
if(tmp == NULL)
{
printf("realloc problem\n");
free(*arr);
exit(1);
}
else
{
*arr = tmp;
}
}