DEV-C++ a zastosowanie USS

0

Cześć przy debugowania programu w C - kompilator ma problemy... Przez ideone przechodzi to w tempie expresowym

http://ideone.com/o9giyQ

Problem występuje w funkcji zapisz - p->t[SIZE-1]= p; - tutaj ma problem z czytaniem

Macie może jakieś wskazówki... ?

0

Tak, nie używaj IDE, które nie było aktualizowane od 7 lat i nigdy nie wyszło z wersji beta.

1

To jest dość ciekawe. Jak skompilowałem ten kod mingw z code-blocks (mingw gcc 4.4.1) to debugger pokazywał segfault w kodzie, a jak skompilowałem przez cygwinowe gcc (4.5.3) to wydaje się działać poprawnie. Ale niestety kod jest tak słabo napisany że nie jestem w stanie stwierdzić czy jest tam faktycznie błąd czy nie.

1
a.cpp:27:12: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated-writable-strings]
    zapisz("ALF",p);
           ^
a.cpp:28:12: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated-writable-strings]
    zapisz("ALFABET",p);
           ^
a.cpp:29:12: warning: conversion from string literal to 'char *' is deprecated [-Wdeprecated-writable-strings]
    zapisz("ALFABETYCZNIE",p);
           ^
a.cpp:49:14: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned int')
      [-Wsign-compare]
    for (; i <= strlen(slowo); i++)
           ~ ^  ~~~~~~~~~~~~~
4 warnings generated.

A co do błędu, to po pobieżnym odpaleniu pod debugerem mogę powiedzieć, że

        if(p->t[pos] != NULL)
            p = p->t[pos]; // w tym miejscu

następuje przypisanie wartości niezainicjalizowanej do p, co potem wywala błąd przy następnym odwołaniu do p.

krasz.png

Wartość 0xCDCDCDCD świadczy o niezainicjalizowanym wskaźniku.

0

Szczerze to przerabiam przykład z książki Piotra Wróblewskiego "Algorytmy i struktury danych" i zrobiłem konwersje z c++ na C w celu jej lepszego zrozumienia (wiem że jest to błędem stąd takie dziwne błędy.) Chodź w książce znajduję się identyczny błąd...

Pytanko z jakiego IDE korzystacie na którym mógłbym się skupić... Używałem codeBlocks oraz teraz Dev++... oba korzystają z mingw. Może być linuksowy gdyż w najbliższym czasie przystąpię do jego instalacji. Dzięki z góry za odpowiedzi.

0

codeblocks

0

Screen powyżej był z Visual Studio 2012. oprócz tego mam kilka wersji VS2010 Express, 2008 Express (nie wszystko na jednym kompie) i QtCreator.
Proste hello worldy powstają w EditPlusie, bo szybciej napiszę 10 linijek niż odpalę środowisko i utworzę projekt.

1 użytkowników online, w tym zalogowanych: 0, gości: 1