Puszczałeś swoją aplikację przez valgrinda? Może jakaś alokacja się nie udała - wówczas odwołujesz sie do NULL/nullptr?
Do valdka możesz użyć albo cliona (on ma wbudowanego valdka) albo prosty skrypt:
LEAKEXITCODE=42
VALGRINDFLAGS="--error-exitcode=$LEAKEXITCODE --leak-check=full \
--show-leak-kinds=all --errors-for-leak-kinds=all -q"
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
echo "Testing... $f"
OUTF="$(mktemp)";
valgrind $VALGRINDFLAGS ./$PROG < $f 1>$OUTF.out 2>$OUTF.out
EXIT_CODE=$?
if [ $EXIT_CODE -ne 0 ];
then
echo -e "-------${RED}WRONG exit code: $EXIT_CODE ${NC}";
else
echo -e "-------${GREEN}GOOD exit code: $EXIT_CODE ${NC}";
fi
echo ""
gdzie f to twój program. Jak podajesz bezpośrednio to wtedy bez $
no i na końcu możesz usunąć temp files przy użyciu rm -f
+ podczas działania swojego programu odpal top (ewentualnie polecam bardziej zainstalować i korzystać z htop) i zobacz czy memory ci się nie wywala - jeśli nie ma wycieków to nie powinno, chyba, że przesadzasz z jakimiś algorytmami. Wtedy ewentualnie możesz zwiększyć swap:
sudo swapoff -a
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
sudo mkswap /swapfile
sudo swapon /swapfile
grep SwapTotal /proc/meminfo
gdzie wielkość zmieniasz sam - ale weź pod uwagę, że gdy twój komputer zaczyna korzystać ze swapa (czyli gdy ram mu się kończy) to zaczyna mulić dopóki nie oczyścisz ramu - ale chociaż program działa jeśli to niezbędne.