你好,我尝试了我能想到的一切来修复崩溃......但没有得到任何东西。所以我会尝试粘贴程序的主要组件,所以也许有人可以帮助解决这个问题……程序编译没有错误,但它崩溃了。如果我运行该程序,请先选择“1”而不是输入输入...当它分开时,它就会save
崩溃。代码的某些部分被注释掉了,因为我试图找到崩溃的根源。如果我忘记了什么或者您需要其他详细信息,请向 SORRY 索取长代码。主要功能及应用类:
#include "Catalog.h"
#include "UIconsole.h"
#include "StudentRepository.h"
#include "StudentValidator.h"
using namespace std;
class Application{
private:
StudentRepository *stre;
StudentValidator *stvl;
Catalog *cat;
UIconsole *ui;
public:
Application();
~Application();
void run();
};
int main(){
Application app;
app.run();
return 0;
}
Application::Application(){
StudentRepository stre();
StudentValidator stvl();
Catalog cat();
UIconsole ui();
}
Application::~Application(){
}
void Application::run(){
ui->runUI();
}
UIconsole.h(选择输入):
class UIconsole{
public:
UIconsole(Catalog *catalog):catalog(catalog){};
void runUI();
private:
Catalog *catalog;
void showMenu();
int getOption();
void addStudent();
UIconsole.cpp
int inp;
do{
showMenu();
inp = getOption();
switch(inp){
case 0: break;
case 1: addStudent();break;
}while(inp != 0);
}
void UIconsole::addStudent(){
string name;
int id,gr;
cout<<"Name: ";
cin>>name;
cout<<"ID: ";
cin>>id; cout<<endl;
cout<<"Group: ";
cin>>gr; cout<<endl;
catalog->addNewStudent(name,id,gr);
// try {
// catalog->addNewStudent(n,id,gr);
// cout<<"Student has been added!"<<endl;
// } catch (Exception &ex) {
// cout<<"Student HASN'T been added"<<ex.getMsg()<<endl;
// }
}
目录.cpp:
void Catalog::addNewStudent(string name, int id, int gr){
Student st(name, id,gr);
//StudentValidator.
studRepo.save(st);
}
学生回购.cpp:
void StudentRepository::save(Student A){
string B;
int check;
B = A.getName();
// check = findByName(B);
//
// if(check != 0){
students.push_back(Student(A));
// }
// else{
// throw RepoException("Name already exist in the database!");
// }
}
学生报告.h
class StudentRepository{
private:
vector <Student> students;
public:
vector <Student> getAll();
void save(Student);
void edit(Student);
void delByName(string);
void searchById();
int findByName(string name);
~StudentRepository();
};
痕迹:
Dr. Memory version 1.4.6 build 2 built on Mar 7 2012 10:14:04
Application cmdline: ""D:\c++\Begin\L_6-8\Debug\L_6-8.exe""
Recorded 62 suppression(s) from default C:\Program Files (x86)\Dr. Memory/bin/suppress-default.txt
Error #1: UNINITIALIZED READ: reading register eax
# 0 _fu36___ZSt4cout [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:90]
# 1 UIconsole::runUI() [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 2 Application::run() [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 3 main [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]
Note: @0:00:10.842 in thread 5436
Note: instruction: mov (%eax) -> %eax
Error #2: UNADDRESSABLE ACCESS: reading 0x00000004-0x00000008 4 byte(s)
# 0 std::vector<>::push_back() [c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/bits/stl_vector.h:828]
# 1 StudentRepository::save() [D:\c++\Begin\L_6-8\Debug/../StudentRepository.cpp:27]
# 2 Catalog::addNewStudent() [D:\c++\Begin\L_6-8\Debug/../Catalog.cpp:7]
# 3 _fu36___ZSt4cout [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:90]
# 4 UIconsole::runUI() [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 5 Application::run() [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 6 main [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]
Note: @0:00:10.853 in thread 5436
Note: instruction: mov 0x04(%eax) -> %edx
Error #3: LEAK 21 direct bytes 0x006ff488-0x006ff49d + 0 indirect bytes
# 0 libstdc++-6.dll!Znwj
# 1 libstdc++-6.dll!ZNSs7reserveEj
# 2 libstdc++-6.dll!ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E
# 3 _fu2___ZSt3cin [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:81]
# 4 UIconsole::runUI() [D:\c++\Begin\L_6-8\Debug/../UIconsole.cpp:19]
# 5 Application::run() [D:\c++\Begin\L_6-8\Debug/../App.cpp:43]
# 6 main [D:\c++\Begin\L_6-8\Debug/../App.cpp:27]
DUPLICATE ERROR COUNTS:
SUPPRESSIONS USED:
ERRORS FOUND:
1 unique, 1 total unaddressable access(es)
1 unique, 1 total uninitialized access(es)
0 unique, 0 total invalid heap argument(s)
0 unique, 0 total warning(s)
1 unique, 1 total, 21 byte(s) of leak(s)
0 unique, 0 total, 0 byte(s) of possible leak(s)
ERRORS IGNORED:
84 still-reachable allocation(s)
(re-run with "-show_reachable" for details)
Details: C:\Users\Warzaru\AppData\Roaming/Dr. Memory/DrMemory-L_6-8.exe.8092.000/results.txt