Я учусь Клеем, и я написал простой код:KLEE не находит Неинициализированную переменную ошибку
#include "klee/klee.h"
#include <stdio.h>
#include <stdlib.h>
int test(int *p)
{
int *q = (int *) malloc(sizeof(int));
if ((*p) == (*q)) {
printf("reading uninitialized heap memory");
}
return 0;
}
int main()
{
int *p = (int *) malloc(sizeof(int));
test(p);
return 0;
}
Первого, я генерировать LLVM битового код, а затем я выполняю Кли к битовому коду. Ниже все выходные данные:
KLEE: output directory is "/Users/yjy/WorkSpace/Test/klee-out-13"
Using STP solver backend
KLEE: WARNING: undefined reference to function: printf
KLEE: WARNING ONCE: calling external: printf(140351601907424)
reading uninitialized heap memory
KLEE: done: total instructions = 61
KLEE: done: completed paths = 4
KLEE: done: generated tests = 4
Я полагаю, что KLEE должен дать мне ошибку, что указатель д не инициализирован, но это не так. Почему KLEE не дает мне об этом ошибки или предупреждения? KLEE не может обнаружить эту ошибку? Заранее спасибо!