繁体   English   中英

在Visual Studio 2013上调试C ++程序

[英]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东西,而是将内存中随机存在的东西添加到saudesaude严重破坏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM