Fakulta elektrotechniky a komunikačních technologií
VUT v Brně, Ústav automatizace a měřicí techniky

Bakalářská práce
Tvorba úloh pro výuku předmětu: Praktické programování v C++
Pavel Šabatka, rok 2007/2008

# Návod k check.h

Postup použití se drobně liší dle použitého překladače:

## MS Visual C++

nebo jiné podobné IDE pro C++ - pro použití knihovny je třeba udělat toto:

1. Připojit OBA DVA soubory knihovny k překládanému projektu. V MS Visual C++ to lze provést pomocí volby Add existing item:
2. Do kontrolovaného souboru připojit hlavičkový soubor direktivou preprocesoru #include, tj. uvést do něj:
   #include ”check.h”

Veškeré další funkce jsou zajištěny automaticky, včetně kontroly alokované paměti na konci programu. Knihovna umožňuje další výpisy při běhu programu pomocí uživatelských funkcí - viz níže.

## Kompilátory bez automaticky tvořeného makefile

jako je např. GCC pro GNU/Linux - postup je stejný jako v předchozím případě, je nutné ale pozměnit makefile tak, aby byly soubory check.h a check.c přeloženy spolu s projektem. Kód souboru makefile tedy může vypadat např. takto:

CC = g++
CFLAGS = -Wall -pedantic -g
CC_CHECK = gcc
CFLAGS_CHECK = -std=c99 -Wall -pedantic -g
#LDFLAGS = -lm
LDFLAGS =
all: check
check: main.o check.o
$(CC) $(LDFLAGS) $^ -o $@
main.o: main.cpp
$(CC) $(CFLAGS) -c $^
check.o: check.c check.h
$(CC) $(CFLAGS) -c $^
clean:
rm -f check *.o *~ *.gch text1.txt text2.txt

Některé překladače C++ mají problém s otevřením souboru s příponou *.c. V takových případech je třeba přejmenovat soubor check.c na check.cpp.

## Uživatelské funkce

Checker obsahuje 3 uživatelské funkce, které lze volat přímo z těla kontrolovaného programu. Jsou to:

- void memory_stat (void); - funkce, která vypíše aktuální stav alokované paměti, tj. přehled a případně tabulku s výpisem paměti, alokované v dané chvíli;
- void file_stat (void); - funkce, která vypíše aktuální počet otevřených a uzavřených souborů;
- void stat (void); - funkce, která slučuje obě dvě předchozí funkce.

Checker sám vždy na konci programu zkontroluje stav alokované paměti a otevřených souborů a vypíše o tom hlášení. V případě, že v programu zůstala neuvolněná paměť nebo neuzavřený soubor, programátor je na to upozorněn výpisem. Checker dále zajistí uvolnění alokované paměti a korektní uzavření všech souborů, takže celý program se chová správně a nezanechává v paměti leaky.

### Příklad výpisu

Příklad kontrolního výpisu knihovny check.h je na tomto obrázku: