string w C++ free(): invalid size

0

Witajcie
Mam dziwny problem, prawdopodobnie wynika on z mojej nieświadomości czym są tak naprawdę stringi w c++, ale nie mogę za bardzo znalezc nigdzie interesujacych mnie informacji.

    string line;
    vector<string> words;
    string word;

    cin >> n;
    getline(cin, line);

    for(int i=0; i<n; ++i){
        getline(cin, line);
        stringstream ss(line);
        while(ss >> word){
            words.push_back(word);
        }
    }

// i tutaj dzieja sie cuda
funkcja(words, costam);

Wywołanie funkcji, która przyjmuje w argumencie vector<string> czy tez referencje na niego powoduje mi błąd "free(): invalid size" . Jak zawsze komunikaty z C++ są bardzo rozbudowane i doskonale opisują cały problem, stąd też tutaj moje pytanie. Co takiego robie źle? Używałem valgrinda, pokazuje że gdzieś coś mi sie niepotrzebnie kasuje....

1

Powoli, od początku. Co dokładnie się dzieje, jak wygląda funkcja, którą wywołujesz.

1

Czyli mówisz, że błąd jest w miejscu, którego nie pokazałeś?

0

Nie, funkcja nawet nie ma ciala. Jest po prostu:
``cpp
stringi funkcja(Vector<string> v, int numbe){

}
``

Tyle wystarczy do wygenerowania błędu

0

Co to jest stringi, Vector, internetowej? Przygotuj MCVE zamiast przedstawiać nam aproksymację kodu sprawiającego błąd...

2

Samo to, że

stringi funkcja(Vector<string> v, int numbe){

} 

funkcja nie zwraca wartości, a powinna (bo tak jest definicji), jest błędne.

0
YooSy napisał(a):

Samo to, że

stringi funkcja(Vector<string> v, int numbe){

} 

funkcja nie zwraca wartości, a powinna (bo tak jest definicji), jest błędne.

faktycznie, miałeś rację. Problem pojawił się jesli funkcja nic nie zwracała. Wywaliło mi błąd gdy miałem ją napisaną dosc rozbudowaną funkcję do algorytmu "mediany median" czy jak kto woli magiczne piątki. W momencie kiedy wywoływałem się rekurencyjnie pisałem select(args) a nie return select(args) . No i wyszły błędy. Szkoda że w c++ nie jest jak w javie - tam nie skompiluje się kod w którym funkcja która powinna cos zwracac nie zwraca niczego (na pewno taka idioto odpornosc powiedziałaby mi więcej niz

free(): invalid size

Tak czy inaczej dzięki

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