[英]Debugging C++ program on Visual Studio 2013
当我调试这个简单的程序时,它给我分段错误,代码上没有错误。
有谁知道?
返回错误chkstk.asm找不到
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <string>
#include <iostream>
using namespace std;
class saude{
int dl, MAX, al;
public:
struct pessoa_t{
string nome;
string Morada;
int idade;
int tel;
string perfil; //se for "e" == enfermeiro; "m" == médico; "d" == doente
};
struct pessoa_t t[100];
void queue(){ //mete as posicoes a nulo
dl = -1; //fim da fila
al = -1; //topo da fila
}
void del(){
pessoa_t tmp;
if (dl == -1){
cout << "FILA VAZIA";
}else{
for (int j = 0; j <= al; j++){
if ((j + 1) <= al){ //envia os valores para trás
tmp = t[j + 1];
t[j] = tmp;
}else{ //se chegarmos ao fim da fila ele simplesmente remove o valor
al--;
if (al == -1) dl = -1;
else dl = 0;
}
}
}
}
void add(pessoa_t item){
if (dl == -1 && al == -1){
dl++;
al++;
}else{
al++;
if (al == MAX){
cout << "FILA CHEIA\n";
al--;
return;
}
}
t[al] = item;
}
void display() {
if (dl != -1) {
for (int iter = 0; iter <= al; iter++)
cout << t[iter].nome << " ";
}
else cout << "VAZIA";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
saude a;
saude::pessoa_t pessoas[2];
pessoas[0].nome = "Ricardo";
pessoas[0].Morada = "Penafiel";
pessoas[0].perfil = "e";
pessoas[0].tel = 91832782;
pessoas[1].nome = "João";
pessoas[1].Morada = "Penafiel";
pessoas[1].perfil = "m";
pessoas[1].tel = 94832744;
cout << "Fila antes de insercao: ";
a.display();
cout << endl << endl;
for (int iter = 0; iter < 5; iter++){
a.add(pessoas[iter]);
cout << "Nro adicao: " << (iter + 1) << " : ";
a.display();
cout << endl;
}
cout << endl;
cout << "Fila depois de adicao: ";
a.display();
cout << endl << endl;
for (int iter = 0; iter < 5; iter++){
a.del();
cout << "Nro remocao: " << (iter + 1) << " : ";
a.display();
cout << endl;
}
system:"pause";
return 0;
}
您有一个包含2个元素的数组,但是您尝试访问5个元素。
向saude::pessoa_t
添加实际上不是saude::pessoa_t
东西,而是将内存中随机存在的东西添加到saude
将saude
严重破坏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.