Я не понимаю condtional прыжка с Valgrind, я сделал эту маленькую функцию, но даже если он-s маленького, есть этот condtional прыжокC - условный переход (Valgrind)
вот функция:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char *function(char *str)
{
int i = 0;
int a = 0;
char *cpy;
cpy = malloc(100);
while (str[i] != '\0')
{
if (str[i] == 'a')
cpy[a++] = 'b';
i++;
}
return (cpy);
}
int main(int ac, char **av)
{
char *str;
str = function(av[1]);
printf("%s\n", str);
}
Когда я использую Valgrind как этот
valgrind ./a.out "aa aa aaaaaaaaaaa"
это дает мне 1 ошибку
==3397== Conditional jump or move depends on uninitialised value(s)
==3397== at 0x4C2E4E8: strlen (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==3397== by 0x4EA1531: puts (in /lib64/libc-2.24.so)
==3397== by 0x400609: main (in /home/benoit.pingris/train/a.out)
Что это значит? Спасибо.
«И я обнаружил, что это произошло потому, что я не инициализировал свою переменную» - так каков ваш вопрос на самом деле? Кажется, вы уже нашли причину. – taskinoor
Я не понимаю эту ошибку valgrind – Beben
Пожалуйста, покажите [MCVE]. –