Ошибка сегментации (ядро сброшено) при попытке запустить алгоритм сортировки для указателей - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь создать алгоритм сортировки для трех переменных-указателей на основе строк, связанных с ними. Тем не менее, каждый раз, когда я пытаюсь запустить программу, после прохождения первой точки ввода пользовательских данных выдается ошибка Сегментация (дамп ядра). Я посмотрел на многих сайтах, чтобы исследовать это и не смог найти ответ, который работает. Я считаю, что это ошибка с распределением памяти моих переменных-указателей, но я понятия не имею, как это исправить или где это. Что я должен сделать, чтобы облегчить это? Вот пример кода:

//new data type
struct Balloon{
string message=""; //give the balloon object a message and a color
string color="";
};

/// main program
int main (void) {

//Instantiate three Balloon objects.
Balloon *front, *middle, *end, *spare;
front, middle, end, spare = new Balloon; //allocate storage for these variables.

//Ask the user what the messages and colors of the balloons are, and set those values to the pointer variables.

//first balloon
cout << "First balloon text: ";
cin >> front->message; //here is when the error is thrown
cout << "Color: ";
cin >> front->color;

Я новичок в Ubuntu и C ++, и раньше я использовал только Java, поэтому я прошу прощения за любые ужасные ошибки, которые я мог непреднамеренно сделать. Заранее благодарю за помощь!

1 Ответ

1 голос
/ 02 октября 2019
front, middle, end, spare = new Balloon; //allocate storage for these variables.

Это выделяет только одну Balloon структуру и назначает spare в качестве указателя на нее. Ни один из других указателей не назначен. Чтобы распределить все всплывающие подсказки, вам нужно сделать каждое из них по отдельности:

front = new Balloon();
middle = new Balloon();
// etc.

Если вы включите все предупреждения вашего компилятора, вы получите сообщение об этой ошибке. Например, с g++ вы можете сделать

g++ -Wall <filename>
...