У меня есть эта простая функция для экстраполяции подстроки в строке.
char* substr(const char *string, size_t start, size_t end) {
const char *char_start = &string[start];
const char *char_end = &string[end];
char *substring = (char *) calloc(1, char_end - char_start + 1);
memcpy(substring, char_start, char_end - char_start + 1);
return substring;
}
У меня есть только одна calloc
, которая создает возвращаемую строку.Я пытаюсь код в цикле, для экстраполяции подстроки массива строк.Это основной код, где я тестирую функцию:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
size_t i;
char *tmp = NULL;
char *kmer_array[5] = {"GTGAA", "ACGGT", "AACGG", "AGTGA", "TGAAC"};
for ( i = 0; i < 5; i++ ) {
tmp = substr(kmer_array[i], 1, strlen(kmer_array[i]));
}
free(tmp);
return 0;
}
Но когда я тестирую код с помощью valgrind, это вывод ( ссылка ).
Я нене понимаю, где я потерял байт