Naruszenie ochrony pamięci w strukturze dynamicznej
Ostatnio zmodyfikowano 2016-10-26 13:58
Paweł91 Temat założony przez niniejszego użytkownika |
Naruszenie ochrony pamięci w strukturze dynamicznej » 2016-10-26 13:24:10 Jest to mój pierwszy post, dlatego chciałbym powitać wszystkich serdecznie. A teraz do rzeczy. Program się kompiluje poprawnie, ale w trakcie jego działania otrzymuje z konsoli informacje o naruszeniu pamięci, bezpośrednio po podaniu pierwszej zmiennej nazwanej number_of_cars. A wiec nie mogę podać danych do obiektu typu string który jest składową stryktury car. Dziękuje za wszystkie pomocne odpowiedzi. #include <iostream> #include <string>
int main() { using namespace std; struct car { string mark; int year_of_production; }; int number_of_cars; cout << "Ile samochodów chcesz skatalogować? "; ( cin >> number_of_cars ).get(); car * cars = new car[ number_of_cars ]; for( int i = 0; i < number_of_cars; i++ ) { cout << "Samochód #" << i + 1 << ": " << endl; cout << "Prosze podać markę: "; getline( cin, cars[ number_of_cars ].mark ); cout << "Rok produkcji: "; ( cin >> cars[ number_of_cars ].year_of_production ).get(); } for( int i = 0; i < number_of_cars; i++ ) { cout << cars[ number_of_cars ].year_of_production << " " << cars[ number_of_cars ].mark << endl; } delete[] cars; return 0; } |
|
killjoy |
» 2016-10-26 13:34:10 W pętli do odwoływania się do kolejnych indeksów tablicy powinieneś użyć iteratora i , a nie rozmiaru tablicy. Masz segmentation fault, bo rozmiar tablicy, jest indeksem, który wykracza poza jej zakres. |
|
Paweł91 Temat założony przez niniejszego użytkownika |
» 2016-10-26 13:58:38 killjoypl Eh, aż mi wstyd. Byłem w gorącej wodzie kompany z tym programem, bo jestem na nogach od wczoraj i chciałem zrobić coś konstruktywnego w tym stanie, ale organizm walczył z psychiką i wyszło to co wyszło, czyli kompromitacja. Dziękuje, tobie bardzo, teraz wszystko działa. |
|
| « 1 » |