Ошибка сегментации (ядро сброшено) Переполнение стека

После исследования я верю, что понимаю, что "Segmentation fault" ошибка Тем не менее, даже после комментирования кода строка за строкой, я не могу найти, где происходит ошибка, чтобы исправить ее. Есть ли что-то, что я пропускаю, что вызывает эту ошибку? Ниже показано, что появляется, когда я запускаю код:

Готовы играть (да / нет)? Y

3C AH 4C 3H 4H 2H 5H 2C 5C AC

Вот ваши карты: 3C AH 4C 3H 4H

Ошибка сегментации (ядро сброшено)

Ниже приведен код, на который я ссылаюсь. Закомментированные части были только мной, пытающимся найти, где произошла ошибка:

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <ctime>
#include <cstdlib>
#include <string>
#include <cstring>
#include <stdio.h>
using namespace std;

vector<string> bigDeck;
vector<string> cardDeck;
vector<string> playerHand;
vector<string> computerhand;
vector<string> shortvec;

const int DEAL_CARDS = 5;void ResetDeck();
void Shuffle();
void DealACard();
void DealQCard();
void DealBCard();
string CStr(int);
int letsee2;

int main()
{cout << "Ready to play (y/n)? ";

char yn;
cin >> yn;
if (yn == 'n' || yn != 'y') return 0;

ResetDeck();

srand(time(0));

Shuffle();

for (int f=0; f < 10; f++)
{
cout << cardDeck[f] << " ";
}cout << "\n\nHere's your cards: ";
for (int i=0; i < DEAL_CARDS; i++)
{
DealACard();
cout << playerHand[i] << " ";
}

cout<<"\n\nHere's the Computer's cards: ";
for (int k=0; k < DEAL_CARDS; k++)
{
DealBCard();
cout << computerhand[k] << " ";
}

for (int u=0; u < DEAL_CARDS; u++)
{
DealQCard();
}

cout<<shortvec.size()<<endl;

cout<<endl<<endl;

//do
//{

for (int woh=0; woh < DEAL_CARDS; woh++)
{
if ((playerHand[woh][0]=='A') && (computerhand[woh][0]=='A'))
{
cout<<"War!"<<endl;}
else if ((playerHand[woh][0]=='A') && (computerhand[woh][0]!='A'))
{
cout<<"Player wins"<<endl;
/*playerHand.push_back(computerhand[woh]);
computerhand.erase(computerhand.begin()+(woh-1));*/
}
else if ((playerHand[woh][0]!='A') && (computerhand[woh][0]=='A'))
{
cout<<"Computer Wins"<<endl;
/*computerhand.push_baci(playerHand[woh]);
playerHand.erase(playerHand.begin()+(woh-1));*/
}
else
{
if ((atoi(playerHand[woh].c_str())) > (atoi(computerhand[woh].c_str())))
{
cout<<"Player wins!"<<endl;
/*playerHand.push_back(computerhand[woh]);
computerhand.erase(computerhand.begin()+(woh-1));*/
}
else if ((atoi(playerHand[woh].c_str())) < (atoi(computerhand[woh].c_str())))
{
cout<<"Computer wins!"<<endl;
/*computerhand.push_back(playerHand[woh]);
playerHand.erase(playerHand.begin()+(woh-1));*/
}
else
{
cout<<"War!"<<endl;

}
}
/*if (playerHand.size() > computerhand.size())
shortvec = computerhand;
else
shortvec = playerHand;

cout<<endl<<endl;
*/
}
/*for (int z=0; z < playerHand.size(); z++)
{
cout << playerHand[z] << " ";
}

cout<<"\n\nHere's the Computer's cards: ";
for (int y=0; y < computerhand.size(); y++)
{
cout << computerhand[y] << " ";
}*/

cout<<endl<<endl;
//}
//while(((playerHand.size())!=10) || (computerhand.size())!=10);

return 0;
}
void Shuffle()
{
random_shuffle(cardDeck.begin(),cardDeck.end());
}

void DealBCard()
{
computerhand.push_back(cardDeck[0]);
cardDeck.erase(cardDeck.begin());
}

void DealACard()
{
playerHand.push_back(cardDeck[0]);
cardDeck.erase(cardDeck.begin());
}

void DealQCard()
{
shortvec.push_back(bigDeck[0]);
bigDeck.erase(bigDeck.begin());
}

string CStr(int n)
{
stringstream s;
s << n;
return s.str();
}

void ResetDeck()
{
cardDeck.clear();
playerHand.clear();
computerhand.clear();

for (int i=2; i<6; ++i)
{
cardDeck.push_back(CStr(i) + "H");
cardDeck.push_back(CStr(i) + "C");
}
cardDeck.push_back("AH");
cardDeck.push_back("AC");
}

3

Решение

У тебя есть std::vector называется bigDeck И в DealQCard вы пытаетесь получить доступ к его 0-му элементу, несмотря на то, что он не имеет элементов. Вы хотели положить несколько карт в bigDeck?

4

Другие решения

Попытка получить доступ к несуществующей памяти или памяти, которая используется другим процессом, также вызывает ошибку сегментации (сбрасывается ядро).

Ядро сброшено означает, что состояние программы было записано, то есть его ресурсы были в памяти и процессоре.

2

По вопросам рекламы ammmcru@yandex.ru