Segmentation Fault (core dumped) C++
Segmentation Fault (core dumped) C++
经过研究,我相信我明白"Segmentation fault"
错误是什么。然而,即使在逐行注释掉代码之后,我似乎也找不到错误发生的地方来修复它。是否有我忽略的东西导致了这个错误?下面是我运行代码时显示的内容:
准备好了吗(y/n)?y
3C AH 4C 3H 4H 2H 5H 2C 5C AC
这是你的卡片:3C AH 4C 3H 4H
段故障(core dump)
粘贴在下面的是我所指的代码。注释掉的部分只是我试图找到错误发生的地方:
#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 << "nnHere's your cards: ";
for (int i=0; i < DEAL_CARDS; i++)
{
DealACard();
cout << playerHand[i] << " ";
}
cout<<"nnHere'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<<"nnHere'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");
}
您有一个称为bigDeck
的std::vector
,并且在DealQCard
中您尝试访问它的第0个元素,尽管它没有元素。你的意思是在bigDeck
里放一些卡片吗?
试图访问不存在的内存或正在被其他进程使用的内存也会导致分割错误(核心转储)。
Core dump 表示程序状态已被记录,即它在内存和处理器中的资源。
相关文章:
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 为什么此代码中显示"*** stack smashing detected ***: <unknown> terminated Aborted (core dumped) "错误?
- 如何修复访问动态数组中结构中的字符串变量时"segmentation fault (core dumped)"错误
- 创建一个简单的类及其变量和函数不断返回" segmentation fault (core dumped)"、C++
- C++ 在类中删除动态 2D 数组时不断"Aborted (core dumped)"
- 尝试读取包含 ints 并存储在 int vector 中的文件,但我不断收到错误"Segmentation fault (core dumped)"
- (C++)在按位 OR 操作时获取错误"Illegal instruction (core dumped)"
- 队列类的取消排队方法"Aborted (core dumped)"错误
- 无法读取 Ubuntu "Segmentation fault (core dumped)"中的.dat或.bin文件
- C++ 链接列表队列实现和析构函数错误:"Aborted (Core Dumped)"
- qt app.exec() segmentation fault core dumped
- llvm pass segmentation fault:(Core dumped)
- 从构造函数引发异常-Core Dumped
- 为什么最后一行的运行结果是"Segmentation fault (core dumped)"
- 为什么 C++ 程序运行结果为 "Segmentation fault (core dumped)"
- 间歇性"Aborted Core Dumped" .也许是static_cast错?
- Segmentation Fault (core dumped) C++
- 动态初始化字符的 2D 数组时"Segmentation Fault [Core Dumped]"
- 运算符后"core dumped"错误 reinterpret_cast<const uint8_t*>
- 购物清单程序:在 VIM "Segmentation fault (core dumped)" 中,但代码块工作