String - różnice w kompilatorach

0

Witam
Po postawieniu sobie win7 i zainstalowaniu Visual Studio 2010 (oba oryginalne oczywiście) w ramach sprawdzenia skonwertowałem kilka projektów z Visuala 2008 żeby sprawdzić czy wszystko gra. Pojawił się problem, w projekcie w którym budowałem drzewo słownikowe, a konkretniej problem ze stringami. Projekty bez stringów działają poprawnie. Na spoju program przyjęty, na ideone też wszystko gra, tak jak wspominałem na Vs2008 też działał jak należy. A na Vs2010 wyskakuje taki błąd:
http://img413.imageshack.us/i/trie.jpg/

W czym problem? Nie naruszam nigdzie pamięci, nie używam nawet (nowej?) biblioteki xstring, o której tam coś pisze... Czy string w kompilatorze Vs2010 działa inaczej niż w Vs2008?

Kod programu:
http://pastebin.com/LYUnUFg3

Zasada działania:
liczba testów, liczba słów do wstawienia do słownika, liczba słów do znalezienia, słowa do wstawienia, słowa do znalezienia, wynik, np:

1
3
1
robotyka
robot
kot

rob
robotyka
robot

Program wywala się już przy wpisaniu 1 1 1 robotyka (czyli nie chce wstawiać słowa do słownika, a powinien).

Proszę o pomoc, bo nie wiem czy problem tkwi w kodzie, czy w Vs2010, czy można mam gdzieś wyciek pamięci w systemie...

0
void Insert(string s) // insert word into trie
{
        TNode *tmp = new TNode;
        tmp = root;
 
        for(int i = 0; s[i] != '\0'; i++) 
// i podobne...

Od kiedy std::string kończy się nullem? Nigdy nie masz gwarancji, że za ostatnim znakiem będzie null, program 'działał' przez przypadek...

0

Wielkie dzięki, to było to. :)

Nadal nie wiem dlaczego na Vs2008 ten błąd pozostał niezauważony, a w Vs2010 już się pojawiał, ale ważne, że problem został rozwiązany.

Ten null na końcu wziął się z przyzwyczajenia z tablicy char'ów z strict c. Teraz będę pamiętał.

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