Mam zainstalowany Clang w moim komputerze (ubuntu), aby znaleźć wycieki pamięci w moim kodzie C. Napisałem przykładowy kod w celu sprawdzenia pracy z nim, który przedstawia się następująco:Jak znaleźć wycieki pamięci z Clang
/* File: hello.c for leak detection */
#include <stdio.h>
#include <stdlib.h>
void *x;
int main() {
x = malloc(2);
x = 0; // Memory leak
return 0;
}
Znalazłem kilka opcji w internecie, aby skompilować jak
$ scan-build clang --analyze hello.c
i
$ scan-build clang -fsanitize=address hello.c
Ale żaden z nich nie wykazuje oznak wycieku pamięci.
scan-build: Użycie '/ usr/bin/szczęk' do analizy statycznej
scan-build: Usuwanie katalogu '/ tmp/scan-build-2015-07-02-122717-16928-1' ponieważ nie zawiera żadnych raportów.
scan-build: Nie znaleziono błędów.
Czy ktoś może powiedzieć, jak prawidłowo używać funkcji wykrywania wycieków w programie Clang for Memory.
Użyj [valgrind] (http://valgrind.org) podczas testowania programu. Takie błędy są niemożliwe do znalezienia statycznego w ogólnym przypadku (ale niektóre narzędzia mogą wykryć błędy heurystycznie lub zachowawczo). I '-fsanitize = address' dodaje * kontrole czasu wykonywania *, więc musisz uruchomić program. –
czy wypróbowałeś '$ scan-build clang -fsanitize = address -g hello.c'? –
$ scan-build clang -fsanitize = adres -g hello.c tak spróbowałem –